Как избежать обработки RunTimeException в Джерси

Насколько я понимаю, наиболее популярное решение для обработки исключений в сервисе отдыха и возврата сообщения об ошибке клиенту — это перехват исключений WebApplicationException или MappableContainerException. Но они расширяют RuntimeExceprion (я не понимаю, почему). Насколько я знаю, нам следует избегать обработки RuntimeExceptions.

Мне нужно обрабатывать такие исключения, как «Сущность с таким именем уже существует». Я уверен, что это не исключение во время выполнения.

Любые другие способы? Сейчас я изучаю Wrappers. Может быть, вы могли бы объяснить мне лучший способ решить мою проблему?


person Nelly Bouvier-Bale    schedule 30.01.2013    source источник


Ответы (1)


Способ, которым я справляюсь с этим, состоит в том, чтобы иметь свою собственную иерархию исключений и создавать отдельный ExceptionMapper, который обрабатывает эту иерархию. Это позволяет мне возвращать любую информацию, которая мне нужна (в моем случае ответ в формате JSON) стандартизированным способом.

У меня все еще был бы ExceptionMapper для WebApplicationException, иначе конечный пользователь мог бы получить некоторые неприятные ответы. И если вы хотите быть более безопасным, вы также можете поместить одно в Exception, которое подберет что-нибудь еще, что вы, возможно, пропустили (исключения попадают в наиболее конкретный преобразователь исключений для них, поэтому добавление одного в Exception не влияет их).

person Community    schedule 30.01.2013