问答详情
源自:2-6 统一异常处理(下)

返回null空指针异常捕获不到,直接报错没有logger提示

postman返回这个格式,不是应该出现的-1,控制台也没有打印【系统异常】这几个字

{

    "timestamp": "2018-10-09T12:02:04.961+0000",

    "status": 500,

    "error": "Internal Server Error",

    "message": "No message available",

    "path": "/girls"

}


提问者:慕粉2137351520 2018-10-09 20:05

个回答

  • 慕粉4135521
    2018-10-12 18:14:33
    已采纳

    下面的是我写的异常处理类

    有两点你需要注意看下

        1.@ExceptionHandler注解填的是Exception.class吗?

        2.else分支这里有没有作以处理,再者说了,这里总返回的是Result对象,你前台怎么可能会展现别的格式呢,说明你并没有返回Result对象,你可以试着用debug启动项目,然后打断点跟着程序看看

    @ExceptionHandler(Exception.class)
    @ResponseBody
    public Result girlHandle(Exception e){
    if(e instanceof GirlException){
    GirlException ge=(GirlException)e;
    log.info(ge.getMessage(),ge);
    return ResultUtil.error(ge.getCode(), ge.getMessage());
    }else{
    //因为错误捕获,所以后台没有报错,这里我们通过日志将其打印出来,以便排错
    log.info("【系统发生错误】",e);
    return ResultUtil.error(-1, "系统发生了错误,请稍后再试,或联系管理员");
    }
    }

    https://img3.mukewang.com/5bc0738f0001cad007810276.jpg

  • 慕粉2137351520
    2018-10-12 18:32:06

    谢谢,我异常处理类值是GirlException类了,没改成Exception类。学习了再次感谢!

  • 墩子_HelloWorld
    2018-10-10 11:33:27

    你这是后台报错了,而不是抛出异常,如果是抛出异常了才会打印系统异常,你看看是不是代码写的有错误