以下是“Spring Boot项目全局异常统一处理案例代码”的完整攻略,包含两个示例。
简介
在Spring Boot应用程序中,可以使用@ControllerAdvice和@ExceptionHandler注释来实现全局异常处理。这些注释允许开发人员定义一个或多个异常处理程序,以便在应用程序中捕获和处理异常。本攻略将介绍如何使用@ControllerAdvice和@ExceptionHandler注释实现全局异常处理。
示例1:使用@ControllerAdvice和@ExceptionHandler实现全局异常处理
以下是使用@ControllerAdvice和@ExceptionHandler实现全局异常处理的示例:
- 创建异常类
首先,我们需要创建一个自定义异常类。以下是一个示例:
public class MyException extends RuntimeException {
public MyException(String message) {
super(message);
}
}
在这个示例中,我们创建了一个名为MyException的自定义异常类。
- 创建异常处理程序
然后,我们需要创建一个异常处理程序。以下是一个示例:
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(MyException.class)
public ResponseEntity<String> handleMyException(MyException ex) {
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(ex.getMessage());
}
}
在这个示例中,我们创建了一个名为GlobalExceptionHandler的异常处理程序,并使用@ExceptionHandler注释定义了一个名为handleMyException的异常处理方法。在handleMyException方法中,我们使用ResponseEntity返回一个HTTP状态码和异常消息。
- 抛出异常
最后,我们需要在应用程序中抛出异常。以下是一个示例:
@RestController
public class HelloController {
@GetMapping("/hello")
public String hello() {
throw new MyException("Something went wrong");
}
}
在这个示例中,我们创建了一个名为HelloController的REST控制器,并在控制器中添加了一个名为hello的REST API。在hello API中,我们抛出一个MyException异常。
示例2:使用@ControllerAdvice和@ExceptionHandler实现全局异常处理并记录日志
以下是使用@ControllerAdvice和@ExceptionHandler实现全局异常处理并记录日志的示例:
- 添加依赖
首先,我们需要在pom.xml文件中添加log4j2的依赖。以下是一个示例:
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.14.1</version>
</dependency>
在这个示例中,我们添加了log4j2的依赖。
- 创建异常处理程序
然后,我们需要创建一个异常处理程序,并在异常处理程序中记录日志。以下是一个示例:
@ControllerAdvice
public class GlobalExceptionHandler {
private static final Logger logger = LogManager.getLogger(GlobalExceptionHandler.class);
@ExceptionHandler(MyException.class)
public ResponseEntity<String> handleMyException(MyException ex) {
logger.error("An error occurred: {}", ex.getMessage());
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(ex.getMessage());
}
}
在这个示例中,我们创建了一个名为GlobalExceptionHandler的异常处理程序,并使用@ExceptionHandler注释定义了一个名为handleMyException的异常处理方法。在handleMyException方法中,我们使用Log4j2记录异常消息,并使用ResponseEntity返回一个HTTP状态码和异常消息。
- 抛出异常
最后,我们需要在应用程序中抛出异常。以下是一个示例:
@RestController
public class HelloController {
@GetMapping("/hello")
public String hello() {
throw new MyException("Something went wrong");
}
}
在这个示例中,我们创建了一个名为HelloController的REST控制器,并在控制器中添加了一个名为hello的REST API。在hello API中,我们抛出一个MyException异常。
总结
在本攻略中,我们介绍了如何使用@ControllerAdvice和@ExceptionHandler注释实现全局异常处理,并使用示例代码演示了如何创建异常类、创建异常处理程序、抛出异常以及记录日志。在使用@ControllerAdvice和@ExceptionHandler注释时,需要注意异常处理程序的正确性和稳定性,以保证应用程序的可靠性和性能。同时,需要注意异常消息的准确性和可读性,以便开发人员更好地理解应用程序中的异常。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Springboot项目全局异常统一处理案例代码 - Python技术站