springboot中的异常是怎么进行全局处理的
时间: 2023-05-24 20:01:43 浏览: 39
在Spring Boot中,可以使用@ControllerAdvice注解来标记一个类作为全局异常处理器。在这个处理器类中,可以定义多个方法来处理不同类型的异常,被处理的异常类型可以通过@ExceptionHandler注解指定。当一个被@ExceptionHandler注解标记的方法抛出对应的异常时,Spring将会调用这个方法来处理这个异常。通过这种方式,我们可以轻松地统一处理应用程序中的各种异常。
相关问题
springboot 全局异常处理
Spring Boot提供了全局异常处理的机制,可以统一处理应用程序中的异常情况,提供友好的错误提示信息给用户。以下是Spring Boot全局异常处理的介绍:
1. 创建一个全局异常处理类:可以通过创建一个类并添加`@ControllerAdvice`注解来实现全局异常处理。这个类可以包含多个异常处理方法,每个方法对应一个具体的异常类型。
2. 定义异常处理方法:在全局异常处理类中,可以定义多个异常处理方法,每个方法使用`@ExceptionHandler`注解来指定要处理的异常类型。
3. 异常处理方法的返回值:异常处理方法可以返回不同类型的值,比如返回一个错误页面、返回一个JSON格式的错误信息等。
4. 异常处理的优先级:Spring Boot会根据异常处理方法的参数类型来确定最匹配的异常处理方法。如果找不到匹配的方法,则会将异常传递给上层的异常处理器。
5. 全局异常处理的配置:可以通过在`application.properties`或`application.yml`文件中配置一些全局异常处理相关的属性,比如是否显示堆栈跟踪信息、是否启用默认的错误页面等。
SpringBoot 全局异常处理
SpringBoot 提供了全局异常处理机制,可以统一处理系统中出现的异常。在 SpringBoot 中,通过 @ControllerAdvice 注解实现全局异常处理。
1. 创建一个异常类
```java
public class CustomException extends RuntimeException {
private String message;
public CustomException(String message) {
this.message = message;
}
public String getMessage() {
return message;
}
}
```
2. 创建一个异常处理类
```java
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(CustomException.class)
@ResponseBody
public ResponseEntity<String> handleCustomException(CustomException e) {
return new ResponseEntity<>(e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
}
@ExceptionHandler(Exception.class)
@ResponseBody
public ResponseEntity<String> handleException(Exception e) {
return new ResponseEntity<>(e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
}
}
```
3. 抛出异常并测试
```java
@GetMapping("/test")
public void test() {
throw new CustomException("自定义异常");
}
```
在上面的代码中,我们创建了一个 CustomException 异常,并在控制器中抛出。当抛出 CustomException 异常时,控制器会调用 handleCustomException 方法进行处理。如果抛出的是其他异常,控制器会调用 handleException 方法进行处理。
通过以上步骤,我们就实现了 SpringBoot 中的全局异常处理。