如何处理全局异常

如果没处理

tomcat默认返回500,并且包装了返回的body,含请求时间、返回状态码、什么错误、错误信息,请求路径

controller如下

@RestController
public class MyController {
    @GetMapping("/hello")
    public String getString(){
        int i = 1/0;
        return "Hello World!";
    }
}

如果标准http返回

会返回自定义的body和状态码

controller如下

@RestController
public class MyController {
    @GetMapping("/hello")
    public String getString(){
        int i = 1/0;
        return "Hello World!";
    }

    @ExceptionHandler({RuntimeException.class})
    public ResponseEntity<HttpResponse>error(Exception e){
        return ResponseEntity
                .status(HttpStatus.BAD_REQUEST)
                .body(new HttpResponse<Object>(110,e,"报警"));
    }
}

这也是一个标准返回

返回的状态状态码默认500,@ResponseStatus一定要有,默认状态码是500

    @GetMapping("/rest/v1/mockError")
    public String mockError() {
        int i = 1/0;
        return "mockError";
    }

    @ExceptionHandler({RuntimeException.class})
    @ResponseStatus
    public String error(RuntimeException e){
        return "error";
    }

如果不是标准返回

那么状态码是200,这个不对的

controller如下

@RestController
public class MyController {
    @GetMapping("/hello")
    public String getString(){
        int i = 1/0;
        return "Hello World!";
    }

    @ExceptionHandler({RuntimeException.class})
    public HttpResponse error(Exception e){
        return new HttpResponse<Object>(110,e,"报警");
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章