Некоторые функции 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);
}
Как я могу решить, какие коды ошибок безопасно подавлять (например, при перечислении файлов на диске), когда я не могу предсказать каждый результат?