Какие ошибки мне следует обрабатывать? Какие из них являются «фатальными»?

Некоторые функции Windows, такие как CreateFile , могут возвращать огромное множество кодов ошибок при вызове GetLastError , и непрактично проверять все возможные коды ошибок - документации часто не хватает, и часто добавляются новые коды ошибок.

Некоторые из них (например, нарушения прав доступа или недопустимые параметры) вызваны ошибкой программиста и не должны допускать продолжения выполнения программы. Однако другие возникают из-за других факторов, таких как неправильные права доступа к файлам, нарушения совместного доступа, неправильные имена файлов и т. Д., Которые разработчик практически не контролирует.

Я хотел бы обрабатывать все «некритические» ошибки (например, неправильные имена файлов), позволяя «критическим ошибкам» (например, нарушениям доступа) приводить к сбою моей программы.

В идеале я бы сказал:

// ... an error occurred. Is it a programmer error?

if (IsErrorCritical(GetLastError()))
{
    // Yes; raise an exception, crashing the program.
    RaiseException(GetLastError(), 0, 0, NULL);
}

Как мне решить, какие коды ошибок можно безопасно подавить (например, при перечислении файлов на диске), если я не могу предсказать каждый результат?

5
задан Mehrdad 1 November 2011 в 10:12
поделиться