使用mvc框架来做全局异常捕获并处理,提高了更好的交互。
注意:此异常处理类必须要交给IOC容易管理。
我是放到了controller包下的
package com.xiaohu.controller;
import com.xiaohu.domain.ResponseStatus;
import com.xiaohu.domain.ResponseVO;
import com.xiaohu.exception.MyRuntimeException;
import org.apache.commons.lang3.StringUtils;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
/**
* @ClassName: DefaultExceptionHandler
* @Auther: zdragon
* @Date: 2020/12/22 21:04
* @Description: TODO
* @Version: 1.0
*/
@ControllerAdvice
public class DefaultExceptionHandler {
@ExceptionHandler(Throwable.class)
@ResponseBody
public ResponseVO handlerException(Throwable e) {
ResponseVO vo = new ResponseVO();
if (e instanceof MyRuntimeException) {
MyRuntimeException exception = (MyRuntimeException) e;
setResponseException(vo,exception.getResponseCode() , exception.getResponseMessage());
} else {
setResponseException(vo, ResponseStatus.ERROR.getCode(), e.getMessage());
}
return vo;
}
private void setResponseException(ResponseVO vo, String code, String message) {
if (StringUtils.isBlank(code)) {
code = ResponseStatus.ERROR.getCode();
}
vo.setResponseCode(code);
vo.setResponseMessages(message);
}
}