Spring MVC最佳实践处理控制器中不可恢复的异常

时间:2010-03-29 13:05:00

标签: java exception-handling spring-mvc

如果你的控制器使用服务执行逻辑,而DAO可能会抛出一个不可恢复的异常,那么处理这些方法调用的最佳做法是什么?

目前我正在开发的应用程序有非常冗长的尝试捕获方法,只是错误的错误消息,这似乎不是很强大,我觉得这个代码闻起来,是否有任何cookie切割最佳实践来处理这个在spring-mvc?

2 个答案:

答案 0 :(得分:8)

不要捕获异常并允许它冒泡到HandlerExceptionResolver

您可以在applicationContext中提供SimpleMappingExceptionResolver,以将某些异常类型(或全部)映射到视图名称(例如“errorpage”)。或者,如果您需要更复杂的逻辑,您可以提供自己的实现。

这样你的代码就不会关心它无法处理的异常,并且你可以确保你的用户看到一个很好的“糟糕的事情发生了,不要担心我们在它上面”页面而不是堆栈跟踪。

答案 1 :(得分:6)

查看@ExceptionHandler

您可以像

一样使用它
@ExceptionHandler(IOException.class)
@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
public void handleExc(IOException ext) {}

这将捕获控制器方法抛出的所有IOExceptions,并为响应写出500.