为啥全局异常只显示系统异常,无法显示业务异常呢
全局异常类:
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积分~
来为老师/同学的回答评分吧
0 星