您的位置:首页 > 编程语言 > Java开发

SpringMVC 异常处理HandlerExceptionResolver 笔记(八)

2017-05-27 11:26 316 查看
SpringMVC提供4个异常处理解析器的实现 DefaultHandlerExceptionResolver SimpleMappingExceptionResolver AnnotationMethodHandlerExceptionResolver ResponseStatusExceptionResolver 

SpringMVC默认就装配了DefaultHandlerExceptionResolver SpringMVC会将所产生的异常转为响应状态码,然后我们在web.xml配置相应状态码的跳转页面即可,以下是相应exception所对应的错误代码:

exception类型响应状态代码
ConversionNoSupportedException500(web服务器内部错误)
HttpMediaTypeNotAcceptableException406 (无和请求accept匹配的MIME类型)
HttpMediaTypeNotSupporteException415(不支持的MIME类型)
HttpMessageNotReadableException400 (bad request)
HttpMessageNotWritableException500(web服务器内部错误)
HttpRequestMethodNotSupportedException405(不支持的请求方法)
MissingServletParameterException400
NoSuchHandingMethodException 404 (找不到匹配的资源)
TypeMismatchException 400
Web.xml根据相应的错误码进行错误页面配置:

<error-page>
<error-code>404</error-code>
<location>/404.html</location>
</error-page>


还有比较常用的是AnnotationMethodHandlerExceptionResolver,这个可以通过在controller类当中定义一个方法处理在整个controller中任何一个处理方法出现exception的响应方式。@ExceptionHandler 参数为需要处理的exception类型。

@ExceptionHandler(RuntimeException.class)
public @ResponseBody String exception(RuntimeException e,HttpServletRequest request){
e.printStackTrace();
return "server error!!!";
}

这个是在UserController类中的一个方法,这个方法有两个参数一个是exception,一个是request。这里定义了如果UserController中任意一个handler处理方法出现RuntimeException异常后,输出错误,并返回一个server error!!! 字符串,如果是JSON可以返回一个JSON对象即可返回页面也是同理。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息