SpringBoot全局异常捕获:优雅处理异常,构建健壮应用
SpringBoot全局异常捕获:优雅处理异常,构建健壮应用
在SpringBoot开发中,异常处理是保证应用健壮性的重要环节。本文将详细介绍如何使用@ControllerAdvice和@ExceptionHandler注解实现全局和自定义异常捕获,并提供清晰易懂的代码示例,帮助你轻松掌握异常处理技巧。
1. 创建全局异常处理类
首先,创建一个全局异常处理类GlobalExceptionHandler,使用@ControllerAdvice注解标识,用于处理所有未被捕获的异常:
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(Exception.class)
public ResponseEntity<String> handleException(Exception e) {
// 处理其他异常,返回自定义的错误信息
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body('Internal Server Error');
}
}
2. 创建自定义异常类
为了更精细地处理特定异常,可以创建自定义异常类。例如,创建一个名为MyException的自定义异常类:
public class MyException extends RuntimeException {
public MyException(String message) {
super(message);
}
}
3. 在控制器中抛出异常
在控制器中,可以根据业务逻辑抛出自定义异常或其他异常。例如:
@RestController
public class HelloController {
@GetMapping('/hello')
public String hello() {
throw new MyException('Something went wrong');
}
}
4. 激活全局异常处理器
在启动类上添加@EnableWebMvc注解,激活全局异常处理器:
@EnableWebMvc
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
现在,当访问/hello路径时,会抛出MyException异常,并被GlobalExceptionHandler中的handleException方法捕获。其他未定义的异常也会被该方法捕获并返回自定义的错误信息。
总结
通过上述步骤,你可以在SpringBoot应用中轻松实现全局和自定义异常捕获,提高代码的健壮性和可维护性。
注意: 以上只是一个简单的示例,你可以根据实际需求扩展和修改异常处理逻辑,例如记录日志、返回更详细的错误信息等。
原文地址: https://www.cveoy.top/t/topic/b2wh 著作权归作者所有。请勿转载和采集!