在Spring Boot框架中,如果某方法抛出异常且没有进行任何异常处理,该异常自然会不断沿着调用栈向上抛,最后Spring Boot会默认处理该异常,并将结果返回给前端。默认情况下会以json格式返回一个错误响应,通常包含以下字段:
{"timestamp": "2025-02-13T00:33:00Z", // 异常发生的时间戳"status": 500, // HTTP状态码"error": "Internal Server Error", // 状态码对应的错误信息"path": "/your-request-path" // 请求的路径
}
显然,不对异常做处理且将错误响应直接返回给前端是不好的,因此需要对异常进行处理。可以有以下几个方法:
- 由于对请求的处理是从controller开始的,可以在每个controller方法中使用
try...catch...
语句捕获异常。通常controller方法会很多,所以会导致代码臃肿,因此不推荐。 - 相对更推荐使用全局异常处理器。定义全局异常handler的代码相对模板化,可以找一找模板。重点是要通过
@ExceptionHandler
注解指定方法处理什么类型的异常(比如@ExceptionHandler(Exception.class)
说明该方法捕获所有类型的异常),以及在handler类上加上@RestControllerAdvice
注解。