ГЛАВНАЯ     АРХИВ     НАПИСАТЬ АДМИНУ     ПОДПИСАТЬСЯ НА RSS     ВОЙТИ      

Поиск

Категории

Облако тегов

  << Предыдущий пост       Следующий пост >>  
От: inbruk
17. июля 2013 02:30

исключения

Продолжаю цикл переводов понравившейся мне статьи автора James Dingle про исключения. Первый пост посвященный этой статье находится здесь.

1. Выбрасывайте исключение когда вы не знаете, что делать дальше

Думайте о вашем коде как о компании. Индивидуальные функции и методы это индивидуальные сотрудники, классы это менеджеры. Библиотеки это главные офицеры, и точка входа в Main() это ваш CEO.

Во всех компаниях, сотрудники иногда встречаются с ситуациями, к которым они не готовы. Или которые слишком велики для них, чтобы они взяли ответственность за любой решение. Ваш доставщик пиццы не может починить свой мотоцикл, если тот не хочет заводиться. Что он сделает в таком случае ? Он позвонит своему менеджеру

Сделайте тоже самое со своим кодом. Когда вы столкнулись с ошибкой. Но при этом вы не можете решить что делать. Потому что решение зависит от вещей за пределами контекста метода или функции, которые выбрасывают исключение. Не стыдитесь этого. Ваш метод должен сделать то, что он должен сделть или провалиться. Нет никакой проблемы в том чтобы провалиться в случае, если нет способа решить проблему соответствующим образом.

Пример: вы написали функцию GetImageSize(string fileName), которая рассчитывает размер изображения по имени файла находящегося на диске. При этом, возможно, вы используете эту функцию во множестве ситуаций в вашем приложении. Если эта функция накроется или заглючит (потому что, например, указанный файл не картинка), то не пытайтесь ничего предпринять. Вы пропустили контекст (находитесь вне его). Внутри этой функции вы не имеете ключевой информации, кто попросил сделать это (вызвал ее) и для чего.

Так что вызвать NotAnImageException или BadFormatException это все, что вы можете сделать.

if( header.FileFormat != ”JPEG” ) throw new NotAnImageException();


Отслеживание не всегда необходимо. Нет ничего плохого, чтобы логировать ситуацию здесь, но как вы увидите позже, это не сильно вам поможет.

Продолжение следует ...

Похожие записи


Обработка и логирование исключений под Windows и в веб сервисах (часть 10)
Продолжаю цикл переводов понравившейся мне статьи автора James Dingle про исключения. Первый пост посвященный этой статье находится здесь. 8. Обрушивайтесь правильно В соответствии с правилом " 5 - Не проглатывать исключений ", некоторые разработчики предполагают, что их приложение должно быть всегда работающим. Таким образом они дум...

Обработка и логирование исключений под Windows и в веб сервисах (часть 2)
Продолжаю цикл переводов понравившейся мне статьи автора James Dingle про исключения. Первый пост посвященный этой статье находится здесь. Почему я должен писать эффективные журналы исключений ? Написание эффективной системы перехвата и логирования исключений это не самая сексуальная (приятная, красивая) часть вашего приложения или службы. Хорошее и...

Обработка и логирование исключений под Windows и в веб сервисах (часть 6)
Продолжаю цикл переводов понравившейся мне статьи автора James Dingle про исключения. Первый пост посвященный этой статье находится здесь. 4. Обрабатывать исключение нужно на правильном уровне стека Давайте вернемся к нашей компании по доставке пиццы. Вы могли бы ожидать от каждого из сотрудников, что они не будут сообщять о каждой из проблем их...

Добавить комментарий




biuquote
  • Комментарий
  • Предпросмотр
Loading


  Сохранить комментарий