Como um bom programador, deve-se escrever códigos robustos que lidem com todos os resultados do seu programa. No entanto, quase todas as funções da biblioteca C retornarão 0 ou -1 ou NULL quando houver um erro.
Às vezes, é óbvio que a verificação de erros é necessária, por exemplo, quando você tenta abrir um arquivo. Mas muitas vezes eu ignoro a verificação de erros em funções como printf
ou mesmo malloc
porque não me sinto necessário.
if(fprintf(stderr, "%s", errMsg) < 0){
perror("An error occurred while displaying the previous error.");
exit(1);
}
É uma boa prática ignorar apenas certos erros ou existe uma maneira melhor de lidar com todos os erros?
try
instrução, para que você não precise verificar todas as chamadas ou operações. (Observe também que alguns idiomas são melhores que outros na detecção de erros simples, como desreferenciação nula ou índice de matriz fora dos limites.)
errno
! Caso você não esteja familiarizado, embora seja verdade que "quase todas as funções da biblioteca C retornarão 0 ou -1 ou NULL
quando houver um erro", elas também definem a errno
variável global , que você pode acessar usando #include <errno.h>
e simplesmente lendo o valor de errno
. Portanto, por exemplo, se open
(2) retornar -1
, convém verificar se errno == EACCES
, o que indicaria um erro de permissão ou o ENOENT
que indicaria que o arquivo solicitado não existe.
try
/ catch
, embora você possa simulá-lo com saltos.