如何使用spring boot实现异常处理
时间: 2024-01-30 09:02:12 浏览: 32
在Spring Boot中,可以通过@ControllerAdvice注解来定义全局异常处理器,当系统中某个地方抛出异常时,该异常处理器会进行拦截处理。
以下是一个简单的示例:
1.定义一个自定义异常类,例如:
```java
public class MyException extends RuntimeException {
public MyException(String message) {
super(message);
}
}
```
2.定义一个全局异常处理器,例如:
```java
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(MyException.class)
@ResponseBody
public Map<String, Object> handleMyException(MyException e) {
Map<String, Object> result = new HashMap<>();
result.put("code", 500);
result.put("msg", e.getMessage());
return result;
}
@ExceptionHandler(Exception.class)
@ResponseBody
public Map<String, Object> handleException(Exception e) {
Map<String, Object> result = new HashMap<>();
result.put("code", 500);
result.put("msg", "系统异常,请稍后再试!");
return result;
}
}
```
3.在Controller中抛出自定义异常:
```java
@RestController
public class UserController {
@GetMapping("/user/{id}")
public User getUser(@PathVariable Long id) {
if (id == 1L) {
return new User(id, "张三");
} else {
throw new MyException("用户不存在!");
}
}
}
```
4.测试:
访问http://localhost:8080/user/1,正常返回数据:
```json
{"id":1,"name":"张三"}
```
访问http://localhost:8080/user/2,返回自定义错误信息:
```json
{"code":500,"msg":"用户不存在!"}
```
如果系统中发生其他异常,也会被全局异常处理器拦截并返回统一的错误信息。