为啥全局异常只显示系统异常,无法显示业务异常呢
全局异常类:
package com.imooc.mall.model.exception;
import com.imooc.mall.model.common.ApiRestResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
@ControllerAdvice //用于拦截异常的注解
public class GlobalExceptionHandler {
private final Logger log=LoggerFactory.getLogger(GlobalExceptionHandler.class);
@ExceptionHandler(Exception.class) //声明拦截的异常,然后对其进行处理
@ResponseBody //返回json格式的字符串,需要用这个注解声明返回的是json格式的字符串
public ApiRestResponse ExceptionHandler(Exception e){
log.error("系统异常",e);
return ApiRestResponse.error(ImoocMallExceptionEnum.SYSTEM_EXCEPTION);
}
@ExceptionHandler(ImoocMallExceptionC.class)
@ResponseBody
public ApiRestResponse ImoocMallExceptionHandler(ImoocMallExceptionC e){
log.error("业务异常",e);
return ApiRestResponse.error(e.getCode(),e.getMessage());
}
}业务异常类:
package com.imooc.mall.model.exception;
//异常类需要实现Exception接口
public class ImoocMallExceptionC extends Exception{
private final Integer code;
private final String message;
public ImoocMallExceptionC(Integer code, String message) {
this.code = code;
this.message = message;
}
public ImoocMallExceptionC(ImoocMallExceptionEnum exceptionEnum) {
this(exceptionEnum.getCode(), exceptionEnum.getMsg());
}
public Integer getCode() {
return code;
}
@Override
public String getMessage() {
return message;
}
}psotman测试结果是系统异常

当将系统异常处理方法删除,显示的才是业务异常
控制台错误信息如下:

5
收起
正在回答 回答被采纳积分+1
2023版Java工程师
- 参与学习 人
- 提交作业 8788 份
- 解答问题 9886 个
综合就业常年第一,编程排行常年霸榜,北上广深月薪过万! 不需要基础,无需脱产即可学习,只要你有梦想,想高薪! 全新升级:技术栈升级(包含VUE3.0,ES6,Git)+项目升级(前后端联调与功能升级)
了解课程


恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星