Spring Boot中全局异常处理器
在Spring Boot中,可以通过@ControllerAdvice注解创建全局异常处理器。以下是一个简单的全局异常处理器示例,它捕获所有类型的Exception并返回一个友好的错误消息。
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler;
@ControllerAdvice
public class GlobalExceptionHandler extends ResponseEntityExceptionHandler {
@ExceptionHandler(Exception.class)
@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
public String handleAllExceptions(Exception ex) {
// 记录日志,处理异常信息返回给客户端等
return "An error occurred: " + ex.getMessage();
}
@Override
protected ResponseEntity<Object> handleMethodArgumentNotValid(MethodArgumentNotValidException ex,
HttpHeaders headers,
HttpStatus status,
WebRequest request) {
// 记录日志,处理参数验证异常信息返回给客户端等
return new ResponseEntity<>("Validation failed: " + ex.getBindingResult().toString(), HttpStatus.BAD_REQUEST);
}
// 可以添加更多的异常处理方法...
}
这个全局异常处理器提供了两个异常处理方法:
handleAllExceptions
捕获所有异常并返回一个内部服务器错误(500)。handleMethodArgumentNotValid
捕获参数验证失败的异常(MethodArgumentNotValidException)并返回一个错误请求(400)。
你可以根据需要添加更多的异常处理方法,以处理其他类型的异常。记得在处理异常时应该记录日志以便调试和监控。
评论已关闭