Собственные классы исключений
От: Буравчик Россия  
Дата: 11.12.14 17:34
Оценка:
Когда стоить заводить собственные классы исключений (custom exceptions)?
Как вы делаете в своем коде?
Best regards, Буравчик
Отредактировано 11.12.2014 17:43 Буравчик . Предыдущая версия .
Re: Собственные классы исключений
От: dimgel Россия https://github.com/dimgel
Дата: 11.12.14 17:37
Оценка: 5 (1) +1
Здравствуйте, Буравчик, Вы писали:

Б>Когда стоить заводить собственные классы исключений (custom excceptions)?

Б>Как вы делаете в своем коде?

У меня есть класс UserException, сообщение которого показывается юзеру (остальные исключения журналируются и юзеру показывается только код ошибки). Это UserException бросается в т.ч. при ошибках валидации параметров запроса. И больше вроде бы ничего.
Re: Собственные классы исключений
От: Rinbe Россия  
Дата: 11.12.14 17:48
Оценка: +1
Здравствуйте, Буравчик, Вы писали:

Б>Когда стоить заводить собственные классы исключений (custom exceptions)?

Б>Как вы делаете в своем коде?

Делаем для своих велосипедов библиотек.
Re[2]: Собственные классы исключений
От: Буравчик Россия  
Дата: 11.12.14 18:00
Оценка:
Здравствуйте, Rinbe, Вы писали:

R>Делаем для своих велосипедов библиотек.


А подробнее?
В каких случаях делаете?
Сколько их — "на каждый чих" или несколько общих?
и т.п.
Best regards, Буравчик
Re[3]: Собственные классы исключений
От: Rinbe Россия  
Дата: 11.12.14 18:03
Оценка:
Здравствуйте, Буравчик, Вы писали:

Б>Здравствуйте, Rinbe, Вы писали:


R>>Делаем для своих велосипедов библиотек.


Б>А подробнее?

Б>В каких случаях делаете?
Б>Сколько их — "на каждый чих" или несколько общих?
Б>и т.п.

Для валидации использую стандартные, а для действий недопустимых для данного состояния объекта-свои.
Re[3]: Собственные классы исключений
От: samius Япония http://sams-tricks.blogspot.com
Дата: 11.12.14 18:25
Оценка: 5 (1) +4
Здравствуйте, Буравчик, Вы писали:

Б>Здравствуйте, Rinbe, Вы писали:


R>>Делаем для своих велосипедов библиотек.


Б>А подробнее?

Б>В каких случаях делаете?
Б>Сколько их — "на каждый чих" или несколько общих?
Б>и т.п.

Отталкиваюсь от сценариев обработки.
Тривиальный случай — если вообще не обрабатывать, как упало, так и ладно. Достаточно одного класса.
Шаг индукции:
а) требуется обработка чего-то более специального, чем стандартные исключения, чего не кидает фреймворк/либы.
б) требуется обработка чего-то более общего, чем стандартные исключения. например, ошибку формата/конец потока/файл не найден следует обобщить и интерпретировать как "невозможность прочитать конфигурацию". Тогда клиентский код сможет отреагировать и вспомнить предыдущую, выдумать конфигурацию по умолчанию или еще что-то, не обращая внимания на источник.

Итого, как только необходимо научиться отличать какую-то новую ситуацию от других, не занимаясь парсингом текста сообщения и разборов кодов ошибок.
Re: Собственные классы исключений
От: Sinix  
Дата: 11.12.14 18:43
Оценка: +1
Здравствуйте, Буравчик, Вы писали:

Б>Когда стоить заводить собственные классы исключений (custom exceptions)?

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

Б>Как вы делаете в своем коде?

Стандартные рекомендации, вот сокращённый вариант. Подробности можно подглядеть в Framework Design Guidelines book.
Re: Собственные классы исключений
От: Sharov Россия  
Дата: 12.12.14 10:56
Оценка:
Здравствуйте, Буравчик, Вы писали:

Б>Когда стоить заводить собственные классы исключений (custom exceptions)?

Б>Как вы делаете в своем коде?

Когда у приложения куча модулей, и желательно отличать(типизировать) их ошибки.
С ошибками одного модуля можно жить, с ошибками другого -- failfast.
Кодом людям нужно помогать!
Re: Собственные классы исключений
От: diez_p  
Дата: 15.12.14 06:54
Оценка:
Здравствуйте, Буравчик, Вы писали:

Б>Когда стоить заводить собственные классы исключений (custom exceptions)?

Б>Как вы делаете в своем коде?

Везде все может быть сильно по разному. Зависит от приложения. UserException делали в основном для всяких либ/фреймворков, но если можно без них, лучше без них.
Re[2]: Собственные классы исключений
От: dimgel Россия https://github.com/dimgel
Дата: 27.12.14 05:45
Оценка:
Здравствуйте, dimgel, мы писали:

D>У меня есть класс UserException, сообщение которого показывается юзеру (остальные исключения журналируются и юзеру показывается только код ошибки). Это UserException бросается в т.ч. при ошибках валидации параметров запроса. И больше вроде бы ничего.


Во, ещё чё в архивах нашлось: класс EBreak. Такой дальний break через годы, через расстоянья вложенные циклы и границы методов. Где ловлю — молча глотаю (throw и catch по нему строго согласованы, естественно).
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.