springboot 全局异常
时间: 2023-07-07 14:27:31 浏览: 103
在Spring Boot中,我们可以通过@ControllerAdvice注解来实现全局异常处理。该注解通常用于定义一个全局的异常处理器类,用于处理系统中抛出的各种异常。
下面是一个简单的全局异常处理器类的例子:
```
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(Exception.class)
public ResponseEntity<String> handleException(Exception e) {
return new ResponseEntity<>("系统异常:" + e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
}
}
```
在这个例子中,我们定义了一个名为GlobalExceptionHandler的类,并在该类上使用@ControllerAdvice注解来指定该类是一个全局异常处理器类。在该类中,我们使用@ExceptionHandler注解来指定处理Exception异常的方法,并在该方法中返回一个ResponseEntity对象,用于描述异常信息和HTTP状态码。
当系统中抛出Exception异常时,会自动跳转到该处理器类中的handleException方法进行处理,并返回一个HTTP 500 Internal Server Error状态码和异常信息。
除了Exception异常外,我们也可以使用@ExceptionHandler注解来处理其他类型的异常,例如NullPointerException、IllegalArgumentException等。例如:
```
@ExceptionHandler(NullPointerException.class)
public ResponseEntity<String> handleNullPointerException(NullPointerException e) {
return new ResponseEntity<>("空指针异常:" + e.getMessage(), HttpStatus.BAD_REQUEST);
}
@ExceptionHandler(IllegalArgumentException.class)
public ResponseEntity<String> handleIllegalArgumentException(IllegalArgumentException e) {
return new ResponseEntity<>("参数异常:" + e.getMessage(), HttpStatus.BAD_REQUEST);
}
```
在这个例子中,我们分别定义了处理NullPointerException和IllegalArgumentException异常的方法,并在这些方法中返回不同的HTTP状态码和异常信息。
总之,Spring Boot提供了非常方便的全局异常处理机制,可以大大简化我们的异常处理代码,并提高系统的可维护性和稳定性。
阅读全文