相關(guān)代碼
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
// 標(biāo)記是對controller的advice
@RestControllerAdvice
public class ControllerExceptionHandler {
// 標(biāo)記匹配的異常
@ExceptionHandler(value = Exception.class)
public String handException(Exception e) {
// 在這里可以對相應(yīng)的異常進(jìn)行封裝
return new ReturnMsg().handleException(e);
}
}
業(yè)務(wù)場景
之前公司的代碼在每個controller最外層都包裹了異常異常處理的代碼,用于處理業(yè)務(wù)上拋出的異常涮坐,大致如下
function() {
try {
// 操作業(yè)務(wù)
} catch() {
// 處理業(yè)務(wù)異常,封裝后返回前端
}
}
這樣就造成了大量的重復(fù)代碼法牲,而且catch中對業(yè)務(wù)異常處理的方式基本都是相同的奢浑,并不存在特別之處,所以可以基于ControllerAdvice進(jìn)行統(tǒng)一管理讥蟆。
實(shí)現(xiàn)原理
待補(bǔ)充
參考一下