пятница, 18 января 2008 г.

Обработка ошибок

Для себя я уяснил 2 простых правила обработки ошибок в программе. Любая необработанная ошибка должна иметь последствия. Неважно какие, главное, что-бы была возможность узнать, что ошибка произошла. Как следствие - второе правило: Должна существовать возможность узнать причину возникновения ошибки. Неважно как, но должна быть возможность установить точное место возникновения ошибки. Варианты - от сообщения в лог, с именем функции и номером строки, до создания дампа, содержащего состояние стека, и регистров в момент обнаружения ошибки. Ну а как-же быть с ошибками, не приводящим к завершению приложения? Для этого есть первое правило %) Разумеется следует пользоваться исключениями и писать безопасный с точки зрения исключений код. Возвращаемый какой нибудь функцией HRESULT, клиентский код может и не проверить, исключение он конечно то-же может и не перехватить, но по крайней мере будет ясно где ошибка. Так-же не стоит увлекаться разработкой разветвленных иерархий классов исключений, вполне хватит и одного (благодаря второму правилу и бритве Оккама :-D)

Комментариев нет: