SpringBoot 统一异常处理

SpringBoot 统一异常处理

(1)统一格式

首先我们需要定义错误页面的统一格式:

@Data
public class ResponseData {
	
	private Boolean status = true;
	private int code = 200;
	private String message = "";
	private Object data;
}
  • @Data 是lombok插件提供的注解,可以对实体类提供Getter、Setter方法,方便开发。

(2)编写统一异常处理类

然后开始编写统一异常处理的相应逻辑:

@ControllerAdvice
public class GlobalExceptionHandler {
	private Logger logger = LoggerFactory.getLogger(GlobalExceptionHandler.class);

	@ExceptionHandler(value = Exception.class)
	@ResponseBody
	public ResponseData defaultErrorHandler(HttpServletRequest req, Exception e) throws Exception {
		logger.error("", e);
		ResponseData r = new ResponseData();
		r.setMessage(e.getMessage());
		if (e instanceof org.springframework.web.servlet.NoHandlerFoundException) {
			r.setCode(404);
		} else {
			r.setCode(500);
		}
		r.setData(null);
		r.setStatus(false);
		return r;
	}
}

这里有几个点需要说明:

  1. @ControllerAdvice 是Spring MVC中的注解,是@Controller的加强特定版,这里作为全局异常处理来使用,这只是其中的一种用法。
  2. @ExceptionHandler用来指明异常的类型,这里捕获所有的异常,可根据场景自行设计。

(3)配置文件

最后关键的一步是在配置文件中加上如下注解:

#出现错误时,直接抛出异常
spring.mvc.throw-exception-if-no-handler-found=true 
#不要为我们的工程中的资源文件建立映射
spring.resources.add-mappings=false

以上内容参考自:

  • 《Spring Cloud微服务入门、实战与进阶》----尹吉欢
  • @ControllerAdvice的更多用法,移步https://www.cnblogs.com/lenve/p/10748453.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值