我们在做web应用的时候,请求处理过程中发生错误是非常常见的情况。这个时候就需要统一异常处理了,这篇文章主要给大家介绍了spring boot如何进行统一异常处理的相关资料,需要的朋友可以参考借鉴,下面来一起看看吧。
Spring Boot中默认带了error的映射,但是这个错误页面显示给用户并不是很友好。
统一异常处理
通过使用@ControllerAdvice定义统一异常处理的类,而不是在每个Controller中逐个定义。
@ExceptionHandler用来定义函数针对的函数类型,最后将Exception对象和请求URL映射到URL中。
@ControllerAdvice
class ExceptionTranslator {
public static final String DEFAULT_ERROR_VIEW = "error";
@ExceptionHandler(value = Exception.class)
public ModelAndView defaultErrorHandler(HttpServletRequest req, Exception e) throws Exception {
ModelAndView mav = new ModelAndView();
mav.addObject("exception", e);
mav.addObject("url", req.getRequestURL());
mav.setViewName(DEFAULT_ERROR_VIEW);
return mav;
}
}
PHP网络编程技术详解由浅入深,全面、系统地介绍了PHP开发技术,并提供了大量实例,供读者实战演练。另外,笔者专门为本书录制了相应的配套教学视频,以帮助读者更好地学习本书内容。这些视频和书中的实例源代码一起收录于配书光盘中。本书共分4篇。第1篇是PHP准备篇,介绍了PHP的优势、开发环境及安装;第2篇是PHP基础篇,介绍了PHP中的常量与变量、运算符与表达式、流程控制以及函数;第3篇是进阶篇,介绍
386
实现error.html页面展示
在templates目录下创建error.html。
例如:
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8" />
<title>统一异常处理</title>
</head>
<body>
<h1>Error Handler</h1>
<p th:text="${url}"></p>
<p th:text="${exception.message}"></p>
</body>
</html>返回使用Json格式
只需在@ExceptionHandler之后加入@ResponseBody,就能让处理函数return的内容转换为JSON格式
创建一个JSON返回对象,如:
public class ErrorDTO implements Serializable {
private static final long serialVersionUID = 1L;
private final String message;
private final String description;
private List<FieldErrorDTO> fieldErrors;
//getter和setter省略
}可以为指定的Exception添加异常处理
@ExceptionHandler(ConcurrencyFailureException.class)
@ResponseStatus(HttpStatus.CONFLICT)
@ResponseBody
public ErrorDTO processConcurencyError(ConcurrencyFailureException ex) {
return new ErrorDTO(ErrorConstants.ERR_CONCURRENCY_FAILURE);
}ErrorConstants.ERR_CONCURRENCY_FAILURE 是定义的一个异常信息。
总结
以上就是Spring Boot统一异常处理实例代码详解的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号