如何使用Spring Boot实现异常处理?
时间: 2024-04-29 08:25:26 浏览: 154
在Spring Boot中,可以通过@ControllerAdvice注解和@ExceptionHandler注解来实现异常处理。
1. 创建一个异常处理类
在Spring Boot中,可以创建一个类并使用@ControllerAdvice注解来标注该类,以便在应用程序中捕获所有异常。
```
@ControllerAdvice
public class ExceptionHandlerController {
@ExceptionHandler(value = Exception.class)
public ResponseEntity<Object> handleException(Exception ex) {
// 处理异常
}
}
```
2. 处理异常
在异常处理类中,可以使用@ExceptionHandler注解来处理特定的异常类型。例如,下面的代码捕获NullPointerException异常并返回自定义的错误消息。
```
@ExceptionHandler(value = NullPointerException.class)
public ResponseEntity<Object> handleNullPointerException(NullPointerException ex) {
return new ResponseEntity<>("NullPointerException occurred.", HttpStatus.BAD_REQUEST);
}
```
3. 返回自定义错误消息
可以在异常处理方法中返回自定义的错误消息。例如,下面的代码返回一个包含错误消息和HTTP状态码的ResponseEntity对象。
```
return new ResponseEntity<>("Something went wrong.", HttpStatus.BAD_REQUEST);
```
4. 返回JSON格式的错误消息
如果想要返回JSON格式的错误消息,可以创建一个包含错误消息和HTTP状态码的Map对象,并使用ResponseEntity将其返回。
```
Map<String, Object> body = new LinkedHashMap<>();
body.put("timestamp", new Date());
body.put("status", HttpStatus.BAD_REQUEST.value());
body.put("error", "Bad Request");
body.put("message", "Something went wrong.");
return new ResponseEntity<>(body, HttpStatus.BAD_REQUEST);
```
5. 全局异常处理
如果想要捕获应用程序中所有的异常,可以使用@ControllerAdvice注解,并将其作为全局异常处理器。
```
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(Exception.class)
public ResponseEntity<Object> handleException(Exception ex) {
// 处理异常
}
}
```
这样,在应用程序中的任何地方发生的异常都将被这个全局异常处理器捕获并处理。
阅读全文