Как хороший программист, нужно писать надежные коды, которые будут обрабатывать каждый результат его программы. Однако почти все функции из библиотеки C будут возвращать 0, -1 или NULL в случае ошибки.
Иногда очевидно, что необходима проверка ошибок, например, когда вы пытаетесь открыть файл. Но я часто игнорирую проверку ошибок в функциях, таких как printf
или даже malloc
потому, что я не чувствую необходимости.
if(fprintf(stderr, "%s", errMsg) < 0){
perror("An error occurred while displaying the previous error.");
exit(1);
}
Это хорошая практика, чтобы просто игнорировать определенные ошибки, или есть лучший способ обработать все ошибки?
try
оператором, поэтому вам не нужно проверять каждый отдельный вызов или операцию. (Также обратите внимание, что некоторые языки лучше других обнаруживают простые ошибки, такие как нулевая разыменование или индекс массива за пределами границ.)
errno
! В случае, если вы не знакомы, хотя это правда, что «почти все функции из библиотеки C будут возвращать 0 или -1 или NULL
в случае ошибки», они также устанавливают глобальную errno
переменную , к которой вы можете получить доступ, используя, #include <errno.h>
а затем просто читая стоимость errno
. Так, например, если open
возвращается (2) -1
, вы можете проверить errno == EACCES
, будет ли это указывать на ошибку прав доступа или на то ENOENT
, что запрошенный файл не существует.
try
/ catch
, хотя вы можете смоделировать его с помощью прыжков.