技术分享 | Spring Boot 异常处理
import org.springframework.http.HttpStatus;
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 {
// 处理所有Exception类型的异常
@ExceptionHandler(Exception.class)
@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
public String handleAllExceptions(Exception ex) {
// 记录日志,发送警告等
return "An error occurred: " + ex.getMessage();
}
// 处理特定的自定义异常
@ExceptionHandler(MyCustomException.class)
@ResponseStatus(HttpStatus.BAD_REQUEST)
public String handleMyCustomException(MyCustomException ex) {
// 记录日志,发送警告等
return "Error: " + ex.getMessage();
}
// 处理其他未捕获的异常
@Override
protected ResponseEntity<Object> handleExceptionInternal(Exception ex, Object body,
HttpHeaders headers,
HttpStatus status,
WebRequest request) {
// 记录日志,发送警告等
return new ResponseEntity<>("Unknown error", HttpStatus.INTERNAL_SERVER_ERROR);
}
}
这个代码示例展示了如何在Spring Boot应用中创建一个全局异常处理器,用于处理各种异常情况。通过@ControllerAdvice
注解,我们可以定义全局异常处理方法,并使用@ExceptionHandler
注解来指定需要处理的异常类型。通过@ResponseStatus
注解,我们可以指定返回的HTTP状态码。这种异常处理方法使得我们可以更优雅地处理异常,而不是让异常堆栈信息直接暴露给客户端。
评论已关闭