@Andrew_Holmes

Нужна ли собственная иерархия ошибок в Java?

Добрый день!

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

Как сейчас происходит у меня:

public class Parameter {
	
	...
	
	public Parameter(String[] args) throws ParameterException {
		SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM");
		try {
			startDate = dateFormat.parse( args[1] );
		} catch (ParseException e) {
			throw new ParameterException("Wrong month format.");
		}
	}
	
	...
	
}

class ParameterException extends Exception {
	public ParameterException(String message) {
		super(message);
	}
}


В итоге получается на каждый класс Class существует соотвествующий ему ClassException. И все эти Class Exception устроены одинаково. Помоему, получается не красиво - большая куча однотипных классов. И все наследуются от какого-нибудь MyApplicationException.

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

Жду ваших советов и рекомендаций. Спасибо!
  • Вопрос задан
  • 439 просмотров
Пригласить эксперта
Ответы на вопрос 2
@Alexey_Kutepov
Разработчик программного обеспечения
Мне часто приходится делать свою иерархию исключений. Правда каждое исключение несёт смысловую нагрузку и должно обрабатываться по разному. Особенно полезна эта иерархия когда исключения пробрасываются "на верх" и попадают в какой-либо перехватчик (как например в Apache Camel). Тогда по типу исключения легко можно понять что с ним делать.
Ответ написан
Комментировать
@bromzh
Drugs-driven development
Есть 2 противоположных мнения на этот счёт, и там и там есть свои плюсы и минусы.

На мой взгляд так:
Если пишешь библиотеку/фреймворк - то можно использовать свои исключения. Но вводи новые классы исключений только когда в них есть необходимость. Т.е. не надо создавать исключение, если можно обойтись системным, не надо городить 200 типов ошибок, чтобы потом часами разматывать стек, смотреть кто что вызвал и писать в блоках catch обработку десятков разных типов твоих ошибок. И вообще, в этом случае, лучше передавать исключения наверх.

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

Войдите, чтобы написать ответ

Похожие вопросы