Лучшая практика или хорошая стратегия, чтобы написать пользовательское исключение в Java - PullRequest
1 голос
/ 10 ноября 2011

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

1 Ответ

6 голосов
/ 10 ноября 2011

Исключениями в Java являются обычные объекты, которые наследуются от Throwable. Решите, хотите ли вы, чтобы ваше исключение было проверено (т. Е. Компилятор проверяет предложение throws в сигнатурах методов, которые могут их выбросить), или нет. Если вы хотите, чтобы ваши пользовательские исключения проверялись, наследуйте от Exception, если нет, от RuntimeException. Вы также можете расширить Error для неустранимых исключений, которые должны привести к закрытию вашего приложения.

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

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

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

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