我们经常会遇到一些设计的不好的应用,当出现一些未知异常时,就显示一个打印着错误堆栈的网页。看到这些错误堆栈信息往往用户都会一头雾水,我们会抱怨这个设计实在太不友好了。而且错误堆栈信息由于暴露了后台方法的调用关系,对应用来说这是有一定潜在风险的。虽然在web.xml中可以配置处理异常的jsp页面,但这个还是远远不够的。SpringMVC对错误处理提供了更好的解决方案。
在SpingMVC的web应用中,有两种处理异常的方法。一种是使用HandlerExceptionResolver接口;一种是在Controller类内部使用@ExceptionHandler注解。使用HandlerExceptionResolver接口可以实现全局异常控制,并且SpringMVC提供了一个默认的实现类SimpleMappingExceptionResolver。今天小博老师就给大家介绍一下该类的使用方法。
比如,我们应用中定义了一个异常类BwfException,我们希望无论什么时候出现该异常就跳转到预定义的页面:/WEB-INF/views/error/BwfExceptionView.jsp。那么spring的配置文件的写法如下所示:
defaultErrorView:定义默认的异常处理页面,当该没有注册对应的异常类型处理时使用。
exceptionAttribute:定义异常处理页面用来获取异常对象的变量名,如果不设置,默认名为exception。
exceptionMappings:定义需要处理的异常,用类名或完全路径名作为key,异常页面名作为value。
注意:配置的异常界面均只包括主文件名,文件路径和后缀已经在viewResolver中指定。