为啥全局异常只显示系统异常,无法显示业务异常呢

为啥全局异常只显示系统异常,无法显示业务异常呢

全局异常类:

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测试结果是系统异常

https://img1.sycdn.imooc.com//climg/64363f44096ea2b210740760.jpg

当将系统异常处理方法删除,显示的才是业务异常

控制台错误信息如下:

https://img1.sycdn.imooc.com//climg/64363f940949479312090170.jpg








正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕小尤 2023-04-12 13:34:47

同学你好,提示的是系统异常,则建议同学检查注册的代码,查抛出的异常是什么类型的,是否与自定义的异常类一致。如下所示:

https://img1.sycdn.imooc.com//climg/643642ec09fcc97807760394.jpg

https://img1.sycdn.imooc.com//climg/64364253095b541108340294.jpg

祝学习愉快!

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师