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