弹簧引导中默认带了错误的映射,但是这个错误页面显示给用户并不是很友好。
<强>统一异常处理强>
通过使用@ControllerAdvice定义统一异常处理的类,而不是在每个控制器中逐个定义。
@ExceptionHandler用来定义函数针对的函数类型,最后将异常对象和请求URL映射到URL中。
@ControllerAdvice 类ExceptionTranslator { 公共静态最终字符串DEFAULT_ERROR_VIEW=按砦蟆? @ExceptionHandler (value=https://www.yisu.com/zixun/Exception.class) 公共ModelAndView defaultErrorHandler (HttpServletRequest点播、异常e){抛出异常 ModelAndView飞行器=new ModelAndView (); 飞行器。addObject(“例外”,e); 飞行器。addObject (“url”, req.getRequestURL ()); mav.setViewName (DEFAULT_ERROR_VIEW); 返回飞行器; } }
<>强实现error.html页面展示强>
在模板目录下创建错误。html。
例如:
& lt; !DOCTYPE html> & lt; html> & lt;头lang=癳n”比; & lt;元charset=" utf - 8 "/比; & lt; title>统一异常处理& lt;/title> & lt;/head> & lt; body> & lt; h2>错误Handler & lt; div th:文本=" $ {url} "祝辞& lt;/div> & lt; div th:文本=" $ {exception.message} "祝辞& lt;/div> & lt;/body> & lt;/html>
<强>返回使用Json格式强>
只需在@ExceptionHandler之后加入@ResponseBody,就能让处理函数返回的内容转换为JSON格式
创建一个JSON返回对象,如:
公共类ErrorDTO实现Serializable { 私有静态最终长serialVersionUID l=1; 私人最终字符串消息; 私人最终字符串描述; 私人ListfieldErrors;//getter和setter省略 }
可以为指定的异常添加异常处理
@ExceptionHandler (ConcurrencyFailureException.class) @ResponseStatus (HttpStatus.CONFLICT) @ResponseBody 公共ErrorDTO processConcurencyError (ConcurrencyFailureException特异){ 返回新ErrorDTO (ErrorConstants.ERR_CONCURRENCY_FAILURE); }
ErrorConstants。ERR_CONCURRENCY_FAILURE是定义的一个异常信息。
<强>总结强>
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。