Предположим, у меня есть конечная точка в Dropwizard, скажемКак я могу переопределить обработку исключений Dropwizard по умолчанию?
@GET
public Response foo() { throw new NullPointerException(); }
Когда я ударил эту конечную точку он регистрирует исключение, и все, что отлично! Я люблю это. То, что я люблю меньше, это то, что он возвращает объекту большого статуса пользователю с status: ERROR
(и это хорошо), а также гигантская трассировка стека, в которой я менее взволнован.
Очевидно, что лучше поймать и справиться с исключениями самостоятельно, но время от времени они собираются проскользнуть. Написание блока catch try вокруг всего ресурса каждый раз в порядке, но (а) оно громоздко и (б) я всегда предпочитаю автоматические решения для «вы должны помнить» решения.
Так что я хотел бы что-то, что делает следующее:
- Журналы трассировки стека (я использую SLF4J, но я предполагаю, что он будет работать на любой другой)
- Возвращает ответ об ошибке общего назначения, который не предоставляет потенциально привилегированную информацию о моем сервере!
Я чувствую, что должен быть встроенный способ сделать это - он уже обрабатывает исключения относительно красиво, но поиск документов ничего не вызвал. Есть ли хорошее решение для этого?
проверить это: http://gary-rowe.com/agilestack/2012/10/23/how-to-implementation-a-runtimeexceptionmapper-for-dropwizard/ – Reek
Предлагает начать дифференцировать исключение, которое вы бросаете. Используйте настраиваемое исключение для отказов, которые вы знаете, и бросайте те с довольно протоколированием. В то же время исключение должно быть выбрано и исправлено. Если вы не хотите отображать это для конечного пользователя, вы, вероятно, можете поймать общее исключение, зарегистрируйте данные и настройте 'Response' и' entity' соответственно. – nullpointer