1.异常捕获类
package com.tx.core.error;
import com.alibaba.fastjson.JSONObject;
import com.tx.base.BaseApiService;
import com.tx.base.BaseResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
/***
* @Author Sunny
* @Description //TODO 全局捕获异常
* @Date 11:14 2019/9/17
* @Param
* @return
*/
@ControllerAdvice
@Slf4j
public class GlobalExceptionHandler extends BaseApiService<JSONObject> {
@ExceptionHandler(RuntimeException.class)
@ResponseBody
public BaseResponse<JSONObject> exceptionHandler(Exception e) {
log.info("###全局捕获异常###,error:{}", e);
return setResultError("系统错误!");
}
}
2.将所有的启动类包层级改成和异常捕获类同级
例如异常捕获类的包路径为com.tx.core.error,那么启动类所在的包层级可以为com,com.tx,conm.tx.core,com,tx.core.error。假如某个启动类的包层级为com.tx.servermember,那么这个启动类下的所有接口异常均无法被这个异常捕获类获取。
正确层级结构示意:
3.测试全局异常捕获类的效果
无全局异常捕获
有全局异常捕获