Spring Boot教程之全局处理异常封装
在Spring Boot应用程序中,我们经常需要处理各种异常,例如数据库异常、网络异常、业务异常等。为了提高代码的可读性和可维护性,我们可以使用全局异常处理机制来封装和处理异常。本文将详细讲解Spring Boot全局处理异常封装的完整攻略,并提供两个示例。
1. 全局异常处理机制
以下是全局异常处理机制的基本流程:
- 创建一个自定义异常类,继承RuntimeException或其子类,并添加构造方法和错误码属性。
public class MyException extends RuntimeException {
private String code;
public MyException(String code, String message) {
super(message);
this.code = code;
}
public String getCode() {
return code;
}
}
在上面的代码中,我们创建了一个名为MyException的自定义异常类,并添加了错误码属性和构造方法。
- 创建一个全局异常处理类,使用@ControllerAdvice和@ExceptionHandler注解来处理异常。
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(MyException.class)
@ResponseBody
public Result handleMyException(MyException e) {
return Result.error(e.getCode(), e.getMessage());
}
@ExceptionHandler(Exception.class)
@ResponseBody
public Result handleException(Exception e) {
return Result.error("500", e.getMessage());
}
}
在上面的代码中,我们创建了一个名为GlobalExceptionHandler的全局异常处理类,并使用@ControllerAdvice注解标记该类。我们还使用@ExceptionHandler注解来处理MyException和Exception异常,并使用@ResponseBody注解将结果转换为JSON格式。
- 在代码中抛出自定义异常。
throw new MyException("400", "Bad request");
在上面的代码中,我们使用throw关键字抛出自定义异常,并传递错误码和错误信息。
2. 示例1:处理自定义异常
以下是处理自定义异常的基本流程:
- 在代码中添加自定义异常类和全局异常处理类。
public class MyException extends RuntimeException {
private String code;
public MyException(String code, String message) {
super(message);
this.code = code;
}
public String getCode() {
return code;
}
}
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(MyException.class)
@ResponseBody
public Result handleMyException(MyException e) {
return Result.error(e.getCode(), e.getMessage());
}
}
在上面的代码中,我们创建了一个名为MyException的自定义异常类,并添加了错误码属性和构造方法。我们还创建了一个名为GlobalExceptionHandler的全局异常处理类,并使用@ExceptionHandler注解处理MyException异常。
- 在代码中抛出自定义异常。
throw new MyException("400", "Bad request");
在上面的代码中,我们使用throw关键字抛出自定义异常,并传递错误码和错误信息。
- 运行应用程序,并在浏览器中访问抛出异常的接口,即可看到返回的JSON格式错误信息。
3. 示例2:处理系统异常
以下是处理系统异常的基本流程:
- 在代码中添加全局异常处理类。
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(Exception.class)
@ResponseBody
public Result handleException(Exception e) {
return Result.error("500", e.getMessage());
}
}
在上面的代码中,我们创建了一个名为GlobalExceptionHandler的全局异常处理类,并使用@ExceptionHandler注解处理Exception异常。
- 在代码中抛出系统异常。
int i = 1 / 0;
在上面的代码中,我们故意除以0,抛出系统异常。
- 运行应用程序,并在浏览器中访问抛出异常的接口,即可看到返回的JSON格式错误信息。
4. 总结
本文详细讲解了Spring Boot全局处理异常封装的完整攻略,并提供了两个示例。在使用全局异常处理机制时,我们应根据实际需求选择合适的方式,并合理配置相关信息,以提高代码的可读性和可维护性。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:spring boot教程之全局处理异常封装 - Python技术站