无论做什么项目,进行异常处理都是非常有必要的,而且你不能把一些只有程序员才能看懂的错误代码抛给用户去看,所以这时候进行统一的异常处理,展现一个比较友好的错误页面就显得很有必要了。
Spring3.0对异常的处理通过HandlerExceptionResolver来实现。
HandlerExceptionResolver有4个实现类DefaultHandlerExceptionResolver、AnnotationMethodExceptionResolver、ResponseStatusExceptionResolver、SimpleMappingExceptionResolver。
Spring3.0对异常的处理主要可通过这两种方式:
一种是使用HandlerExceptionResolver接口;
一种是在@Controller处理器内部使用@ExceptionHandler注解。
使用第一种方式可以实现全局异常控制,并且Spring已经提供了一个默认的实现类SimpleMappingExceptionResolver;
使用第二种方式可以在Controller内部实现更个性化异常处理方式。
优先级
DefaultHandlerExceptionResolver:
Springmvc默认装配了DefaultHandlerExceptionResolver,它会将springmvc的异常转换成对应的响应状态码(500,404等)。
对于Unchecked Exception而言,由于代码不强制捕获,往往被忽略,如果运行期产生了Unchecked Exception,而代码中又没有进行相应的捕获和处理,则我们可能不得不面对尴尬的404、500……等服务器内部错误提示页面。
我们需要一个全面而有效的异常处理机制。目前大多数服务器也都支持在web.xml中通过
SimpleMappingExceptionResolver的使用
error/io.jsp error/sql.jsp
1、defaultErrorView, 当没有配置异常处理映射时,该默认视图将起作用
2、exceptionMappings 异常处理映射Property,key=“异常名称”, vlaue=异常处理视图
配置这个只能拦截Exception,404错误是拦截不了,要单独在web.xml配置,它比web.xml中配置错误页面强大的地方是可以把异常输出。
java.lang.Exception /jsp/error.jsp 404 /jsp/error.jsp