- Нет обработки ошибок. Код пишется только для стандартного (успешного) пути выполнения.
- Базовая проверка ошибок и базовая их генерация.
- Гарантируется, что ошибка или исключение оставит программу в согласованном состоянии, а ресурсы и память корректно очищаются.
- Во всём проекте и во всех слоях кода соблюдается единая стратегия обработки ошибок и исключений.
...when altering one's mind becomes as easy as programming a computer, what does it mean to be human?..
27 марта 2011 г.
Уровень программиста в обработке ошибок
5 комментариев:
Можно использовать некоторые HTML-теги, например:
<b>Жирный</b>
<i>Курсив</i>
<a href="http://www.example.com/">Ссылка</a>
Вам необязательно регистрироваться для комментирования - для этого просто выберите из списка "Анонимный" (для анонимного комментария) или "Имя/URL" (для указания вашего имени и (опционально) ссылки на сайт). Все прочие варианты потребуют от вас входа в вашу учётку.
Пожалуйста, по возможности используйте "Имя/URL" вместо "Анонимный". URL можно просто не указывать.
Ваше сообщение может быть помечено как спам спам-фильтром - не волнуйтесь, оно появится после проверки администратором.
Примечание. Отправлять комментарии могут только участники этого блога.
1. Нет обработки ошибок. Код пишется только для стандартного (успешного) пути выполнения.
ОтветитьУдалитьВот заметил за собой, что когда начинаю изучать новый API - пишу некоторые семплы для себя и во многих местах опускаю проверку ошибок. Частенько после этого бывает, что код из этих семплов попадает в проекты, а обработку ошибок в некоторых местах забываю расставить... Пагубная привычка.
2. Базовая проверка ошибок и базовая их генерация.
Не понятно, что подразумевается под словом базовая? Только самые важные ошибки? Если да - то да, ленюсь некоторые мелочи обрабатывать, например InitializeCriticalSection. Чую буду халтурить пока не споткнусь об подобное)
3. Гарантируется, что ошибка или исключение оставит программу в согласованном состоянии, а ресурсы и память корректно очищаются.
Вот к этому я очень придирчив.
4. Во всём проекте и во всех слоях кода соблюдается единая стратегия обработки ошибок и исключений.
А она бывает разная? Я знаю только одну... блоки try except, try finally. И если код ошибки - либо через функцию с case либо прям на месте через условие.
Если нужно быстро что-то показать или протестировать, то можно и к первому себя отнести, имхо :)
ОтветитьУдалить> Не понятно, что подразумевается под словом базовая? Только самые важные ошибки?
ОтветитьУдалитьДа, только основы. Скажем, в коде включения привилегии поставить проверку вокруг важной части - AdjustTokenPriviledges, то совершенно опустить её у OpenProcess.
"Базовая генерация" подразумевает возбуждение ошибок только в некоторых ключевых местах, опуская "редкие" места.
Кроме того, "базовая" подразумевает и неоднородность: тут мы вернули код ошибки, там - возбудили исключение, а вот здесь и вовсе не предусмотрели способа уведомления о проблеме. Т.е. полный разнобой.
Забыли еще один "уровень" - глухое подавление
ОтветитьУдалитьtry
...
except
end;
PS. Поубивал бы)
У меня нарисована только положительная часть шкалы :D
ОтветитьУдалить