SpringBoot——全局异常处理
在Spring Boot中,可以通过@ControllerAdvice注解创建全局异常处理类,来集中处理应用程序中发生的各种异常。以下是一个简单的示例:
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
处理所有类型的异常。handleMethodArgumentNotValid
处理MethodArgumentNotValidException
异常,这通常是由于@Valid注解验证失败引起的。
当应用程序中发生异常时,这些方法会被调用,并且可以根据需要将错误信息返回给客户端。记得在实际应用中,应该对异常处理进行更详细的日志记录和错误处理,以确保安全和问题追踪。
评论已关闭