2012-11-06 3 views
2

Для того, что я знаю, вы используете проверенные исключения, если у вас есть ошибка, из которой ваше приложение может восстановить. Однако некоторые ошибки, возникающие в моем приложении, не соответствуют исключениям, которые уже сделаны Sun. Можно ли создавать проверенные исключения для домена (неправильная практика?)? Например: DuplicateQuestionException -> брошено, когда приложение получает два одинаковых вопроса. Это случай, когда мое приложение может восстановиться.Создание собственных проверенных исключений

+6

Да. Это прекрасно. Что будет хорошо, чтобы узнать, как вы создали собственное исключение? –

+0

Хорошая практика создания определенных пользователем исключенных исключений, из которых вы можете восстановить и продолжить код приложения. – clinton

+0

Вместо этого вы можете указать способ проверки, есть ли в наличии вопрос: if (! Questions.isDuplicate (newQuestion)) {Questions.add (newQuestion); } 'и выбросить исключенное исключение, например,' IllegalArgumentException', если создается дублирующий вопрос. Это может быть неприменимо к вашему случаю использования. – assylias

ответ

2

да это - хорошая практика. не пытайтесь принудительно использовать существующее исключение, если оно не имеет смысла в вашем домене.

1

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

1

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

пролив от Эффективного Java второго издания Джош Блох:

из пункта 58 о метательных проверяемых исключениях:

«Правило кардинального при принятии решения, следует ли использовать проверенный или непроверенный исключение заключается в следующем: использовании проверенные исключения для условий, из которых можно ожидать, что вызывающий абонент может восстановиться ».

из пункта 60 о расширении существующих исключений:

«Кроме того, не стесняйтесь подклассом существующего исключения, если вы хотите добавить немного больше информации отказа захвата.»

Смежные вопросы