下面是关于在SpringBoot中添加全局异常处理类的详细攻略:
1. 首先新建一个全局异常处理类
在SpringBoot中,我们可以通过编写一个全局异常处理类来处理项目中出现的所有异常。在本文中,我们将这个全局异常处理类命名为 GlobalExceptionHandler。
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(value = Exception.class)
@ResponseBody
public Result errorHandler(Exception e) throws Exception {
e.printStackTrace();
return Result.fail(e.getMessage());
}
}
上述代码中,我们通过@ControllerAdvice注解来标识这是一个全局异常处理类,在类上使用该注解后,这个类中的所有方法都将作为全局异常处理方法。
在方法上,我们通过@ExceptionHandler来指定需要处理的异常类型。在示例中,我们处理的是所有类型的异常,即Exception.class。同时,我们使用@ResponseBody注解来将返回的结果转换为JSON格式返回给前端。
2. 在SpringBoot配置文件中配置
在SpringBoot中,我们需要在配置文件中配置一些参数来启用全局异常处理类。打开src/main/resources/application.yml文件,并添加以下配置:
spring:
mvc:
throw-exception-if-no-handler-found: true
static-path-pattern: /static/**
resources:
add-mappings: false
在上述配置中,我们启用了throw-exception-if-no-handler-found:true,这意味着如果找不到合适的请求处理程序时,将引发NoHandlerFoundException。我们再次在resources下一行中设置add-mappings: false,以确保Spring Boot不会覆盖我们的静态资源处理,例如CSS,JS,HTML等。
3. 验证全局异常处理类
现在,我们已经编写了全局异常处理类并配置了SpringBoot的配置文件。我们可以使用一些示例代码来验证这个全局异常处理类是否正常工作。下面就是两条关于如何测试全局异常处理类的示例:
示例一:测试系统异常
@RestController
public class TestController {
@GetMapping("/test")
public String test() {
int i = 1 / 0;
return "test";
}
}
在上述示例代码中,我们在TestController中的test方法中人为地触发了一个异常,即 1/0,这会引发一个算术异常。接下来,我们启动SpringBoot应用程序,访问http://localhost:8080/test,我们就可以看到通过全局异常处理类进行统一处理并返回我们期望的JSON格式信息了。
示例二:测试自定义异常
除了系统异常,我们还可以在SpringBoot项目中定义自己的业务异常,并对其进行处理。
public class BusinessException extends RuntimeException {
private String errorCode;
public BusinessException(String message) {
super(message);
}
public BusinessException(String errorCode, String message) {
super(message);
this.errorCode = errorCode;
}
public String getErrorCode() {
return errorCode;
}
}
@RestController
public class TestController {
@GetMapping("/test")
public String test() {
throw new BusinessException("500", "自定义业务异常");
}
}
在上述示例代码中,我们首先定义了一个自定义的业务异常类BusinessException,并编写了一个抛出业务异常的代码,接下来启动SpringBoot应用程序,访问http://localhost:8080/test,我们可以看到SpringBoot已经通过全局异常处理类对自定义的业务异常进行了统一处理,并将错误信息以JSON格式返回给前端。
以上就是如何在SpringBoot中添加全局异常处理类的完整攻略,希望能对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:springboot如何添加全局异常捕获类 - Python技术站