Действительно ли необходимо включать текстовое описание при создании исключения? - PullRequest
0 голосов
/ 03 августа 2009

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

Что ты думаешь? Заранее спасибо.

Ответы [ 6 ]

3 голосов
/ 03 августа 2009

Текстовые описания очень полезны. Есть несколько причин, по которым я считаю, что их всегда следует включать:

  • Они позволяют получить четкое представление об исключении, не просматривая его в документах.
  • Они позволяют передавать более конкретную информацию, чем документация для «общего» исключения - в частности, может быть включена информация о контексте исключения
  • Они позволяют вам интернационализировать ваши сообщения об исключениях (очень важно)
  • Они предоставляют способ (если все сделано правильно) для предоставления более значимых отчетов конечному пользователю, в зависимости от ситуации. Однако это должно быть сделано с осторожностью (вы не хотите просто показывать каждое исключение конечному пользователю, если это человек).
  • Они предоставляют простой способ добавить запись исключений, которая более значима, чем просто тип
  • Они обеспечивают стандартизацию: исключение будет соответствовать ожиданиям пользователя в отношении исключения, поскольку основа основана на наличии этой информации
3 голосов
/ 03 августа 2009

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

Другими словами, что такое хорошо ArgumentException, не зная, какой аргумент находится под вопросом и в каком состоянии находился аргумент, вызвавший исключение.

2 голосов
/ 03 августа 2009

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

Например, рассмотрим, не содержит ли следующее исключение сообщение. Вы все еще сможете отследить проблему

  • FileNotFoundException
  • Аргумент * Исключение
2 голосов
/ 03 августа 2009

Да, свойство Message и параметр конструктора сообщений обязательны. Они не являются избыточными.

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

1 голос
/ 03 августа 2009

При отладке или устранении неполадок последнее, что я хочу сделать, это излишне прочитать документацию. Я думаю, что очень удобно иметь пояснительный текст, чтобы сопровождать исключения. Если это не было предоставлено, я думаю, что библиотека действительно пропустила лодку.

1 голос
/ 03 августа 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...