Spring MVC最佳实践:处理控制器中无法恢复的异常

3
当您有一个控制器处理服务和DAO的逻辑,这些服务和DAO可能会抛出不可恢复的异常时,如何处理这些方法调用是最佳实践?
目前,我正在处理的应用程序具有非常冗长的try-catch方法,只是简单地输出异常消息,这似乎并不是很健壮,我认为这段代码存在问题,是否有任何处理spring-mvc中此类情况的标准做法?
2个回答

8
不要捕获异常,让它上升到HandlerExceptionResolver。您可以在应用程序上下文中提供SimpleMappingExceptionResolver以将某些异常类型(或全部)映射到视图名称(例如“errorpage”)。或者,如果需要更复杂的逻辑,则可以提供自己的实现。这样,您的代码就不会涉及它根本无法处理的异常,并且您可以确保您的用户看到一个漂亮的“糟糕,发生了什么事情,不用担心,我们正在处理”的页面,而不是堆栈跟踪。

啊,我非常想使用HandlerExceptionResolver,顺便一提,我的同事们认为这是多余的,我很高兴有更有经验的Matt B也这么说。 - ShaggyInjun

6

请查看@ExceptionHandler

您可以像这样使用它

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

这将捕获由控制器方法抛出的所有IOException,并将500写入响应。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接