相关代码
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
// 标记是对controller的advice
@RestControllerAdvice
public class ControllerExceptionHandler {
// 标记匹配的异常
@ExceptionHandler(value = Exception.class)
public String handException(Exception e) {
// 在这里可以对相应的异常进行封装
return new ReturnMsg().handleException(e);
}
}
业务场景
之前公司的代码在每个controller最外层都包裹了异常异常处理的代码,用于处理业务上抛出的异常,大致如下
function() {
try {
// 操作业务
} catch() {
// 处理业务异常,封装后返回前端
}
}
这样就造成了大量的重复代码,而且catch中对业务异常处理的方式基本都是相同的,并不存在特别之处,所以可以基于ControllerAdvice进行统一管理。
实现原理
待补充
参考一下
网友评论