Interested Article - Код ошибки
- 2020-02-07
- 2
Код ошибки ( англ. Error code ) в программировании , — это номер (или сочетания буквы и номера), который соответствует конкретной проблеме в работе программы . Коды ошибок используются для идентификации неправильной работы аппаратного и программного обеспечения, неверного ввода данных пользователем без обработки возникающей при этом исключительной ситуации в коде программы, хотя иногда коды ошибок используются в сочетании с обработкой исключений . Коды ошибок не следует путать с кодами возврата , хотя они часто используются вместе при обработке ошибок. Одни из самых серьёзных кодов ошибок, которые могут встретить пользователи — это коды « Синего экрана смерти » операционной системы Microsoft Windows .
Примеры
В языках программирования, в которых отсутствует механизм обработки исключений (например, в языке
С
), коды ошибок часто хранятся как глобальные переменные с именами такими как
errno
. Коды ошибок обычно обозначаются номерами, каждый из которых идентифицирует определенную исключительную ситуацию. В приложении, которое использует коды ошибок, каждая
функция
обычно определяет один код возврата, который указывает на ошибку общего значения. Получив этот обобщенный код возврата программист может проверить значение, находящееся в глобальном коде ошибки для определения условий, которые привели к возникновению исключительной ситуации. Например, при неудачной попытке открыть файл, функция может установить глобальный код ошибки, указывающий на причину ошибки и возвратить некорректный указатель на файл. Следующий пример показывает как код ошибки может быть использован для описания причины ошибки:
/* попытка открыть файл на чтение */
FILE *fp = fopen("filename", "r");
/* если файл не может быть открыт, напечатать номер ошибки и сообщение*/
if (fp == NULL){
printf("Cannot open file, error %d, %s\n", errno, strerror(errno));
/* Альтернативно можно использовать perror(), который обеспечивает ту же функциональность */
perror("Cannot open file");
}
Так как обычно коды ошибок — глобальные переменные, то они могут быть доступны из любой точки программы. Так же как и с другими глобальными переменными, эта простота доступа может быть источником проблем в
многопоточной
среде. В связи с тем, что в глобальные переменные могут записывать одновременно несколько потоков, это может привести к состоянию гонки. Для решения этой проблемы,
POSIX
определяет переменную
errno
как переменную локальную к потоку (thread-local variable).
См. также
Ссылки
- Article « » by
- Article « » by and Peter Petersen
- Article « » by
- 2020-02-07
- 2