2010-03-29 2 views
3

Когда у вас есть контроллер, который выполняет логику с услугами и DAO, которые могут генерировать неисправимое исключение, какова наилучшая практика в отношении этих вызовов методов?Spring MVC Best Practice Обработка Неустранимых исключений в контроллере

В настоящее время приложение, над которым я работаю, имеет очень длинные методы catch, которые просто исключают сообщения об ошибках err.out, это не кажется очень надежным, и я думаю, что этот код пахнет, есть ли какая- это весной-mvc?

ответ

6

Отъезд @ExceptionHandler

Вы можете использовать его как

@ExceptionHandler(IOException.class) 
@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR) 
public void handleExc(IOException ext) {} 

Это было бы поймать всех IOExceptions брошенные метода контроллера и выписывать 500 в ответ.

8

Не поймайте Исключение и не позволяйте ему пузыриться до HandlerExceptionResolver.

Вы можете указать SimpleMappingExceptionResolver в вашем приложенииContext, чтобы сопоставить определенные типы исключений (или все) с именем вида (например, «errorpage»). Или, если вам нужна более сложная логика, вы можете предоставить свою собственную реализацию.

Таким образом, ваш код не касается исключений, с которыми он не может справиться в первую очередь, и вы можете убедиться, что ваши пользователи видят приятное «Ой, что-то случилось, не беспокойтесь, мы на нем "вместо stacktrace.

+1

Ваши ссылки странны, если вы хотите их обновить. – Nathan

+0

Ах, у меня было сильное желание использовать HandlerExceptionResolver, и, кстати, я это сделал, мои коллеги отменили это, назвав его суперплодным, я рад, что более опытный матовый b сказал то же самое. – ShaggyInjun