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

Поиск

Категории

Облако тегов

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

исключения

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

4. Обрабатывать исключение нужно на правильном уровне стека

Давайте вернемся к нашей компании по доставке пиццы. Вы могли бы ожидать от каждого из сотрудников, что они не будут сообщять о каждой из проблем их менеджерам. Те случаи с которыми они должны справиться, это часть их работы.

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

С другой стороны, если пиццы всегда должны быть доставлены. А региональный директор дает локальной точке продаж слишком широкий диапазон распространения (продаж). То проблема возможно не будет эффективно решена. Если локальная точка продаж пытается решить проблему сама, и не поднимает ее на более высокий уровень корпорации. Но региональный директор может сделать кое-что по этому поводу.

Тоже самое происходит и с вашим приложением. Когда вы предполагаете обработать ошибку, делайте это.

Обработка исключений означает, что приложение будет исполнять другой код, потому что случилась ошибка. Это может быть, например, вываливание по ошибке, повторная попытка, или ожидание пользовательского ввода. Или вы решите, что ошибка приемлима и программа продолжится. Но вы должны принять решение.

Если вы не знаете о том, что делать с исключением, потому что вам нехватает информации о контексте. Вы, возможно, находитесь слишком низко в стеке, поэтому не ловите его. Если исключение происходит в более высоком/большом процессе чем необходимо. Это значит, возможно, вы поймали исключение слишком высоко в стеке.

try
{
  UploadUserImageToWebProfile();
}
catch(NotAnImageException exception)
{
  Log("Cannot upload the image to the web profile of user {0}. " +
    "The web profile will show a default image instead. " +
    "The source error is: {1}", userName, exception);
}


Конечно, здесь вы получаете контекст и присоединяете к нему пользователя, к которому он относится. Давайте дадим ключи/подсказки и указатели людям, которые читают лог файл, пытаясь найти или воспроизвести проблему.

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

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


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

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

Обработка и логирование исключений под Windows и в веб сервисах (часть 1)
Начинаю цикл переводов понравившейся мне статьи автора James Dingle про исключения. Оригинал находится здесь: Efficient logging and exception handling in Windows and Web services : Part 1 – Raising exceptions, writing dumps . Есть много статей обсуждающих лучшие практики работы с исключениями. И они почти все рекомендуются к прочтению. Они обычно обсужд...

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




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


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