Interested Article - Код ошибки

Код ошибки ( англ. 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).

См. также

Ссылки

Источник —

Same as Код ошибки