Jako dobry programista powinieneś pisać solidne kody, które będą obsługiwały każdy wynik jego programu. Jednak prawie wszystkie funkcje z biblioteki C zwracają 0 lub -1 lub NULL, gdy wystąpi błąd.
Czasami oczywiste jest, że konieczne jest sprawdzanie błędów, na przykład podczas próby otwarcia pliku. Ale często ignoruję sprawdzanie błędów w funkcjach takich, a printf
nawet malloc
dlatego, że nie uważam tego za konieczne.
if(fprintf(stderr, "%s", errMsg) < 0){
perror("An error occurred while displaying the previous error.");
exit(1);
}
Czy dobrą praktyką jest ignorowanie niektórych błędów, czy też istnieje lepszy sposób na obsługę wszystkich błędów?
try
instrukcji, dzięki czemu nie musisz sprawdzać każdego wywołania lub operacji. (Należy również pamiętać, że niektóre języki są lepsze niż inne w wykrywaniu prostych błędów, takich jak zerowe zerowanie lub indeks tablicy poza zakresem.)
errno
! W przypadku, gdy nie jesteś zaznajomiony, to prawda, że „prawie wszystkie funkcje z biblioteki C zwrócą 0 lub -1 lub NULL
gdy wystąpi błąd”, ustawiają również errno
zmienną globalną , do której można uzyskać dostęp za pomocą, #include <errno.h>
a następnie po prostu czytając wartość errno
. Na przykład, jeśli open
zwróci (2) -1
, możesz sprawdzić, czy to errno == EACCES
, co wskazywałoby na błąd uprawnień, lub ENOENT
, co wskazywałoby, że żądany plik nie istnieje.
try
/ catch
, chociaż można to symulować za pomocą skoków.