Spring Boot中Web应用的统一异常处理,2024年最新2024年最新Web前端面试经历
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler;
@ControllerAdvice
public class GlobalExceptionHandler extends ResponseEntityExceptionHandler {
// 处理所有Exception类型的异常
@ExceptionHandler(Exception.class)
@ResponseBody
public ResponseEntity<String> handleException(Exception e) {
// 这里可以记录日志,返回自定义的错误信息等
return new ResponseEntity<>("An error occurred: " + e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
}
// 覆盖父类方法,处理特定的异常
@Override
protected ResponseEntity<Object> handleExceptionInternal(Exception ex, Object body, HttpHeaders headers, HttpStatus status, WebRequest request) {
// 这里可以记录日志,返回自定义的错误信息等
return new ResponseEntity<>("An error occurred: " + ex.getMessage(), headers, status);
}
}
这个代码示例展示了如何在Spring Boot Web应用中创建一个全局异常处理器来处理所有类型的异常。通过@ControllerAdvice
注解,我们可以定义全局异常处理器,并使用@ExceptionHandler
注解来处理特定的异常类型。同时,我们也可以覆盖handleExceptionInternal
方法来处理特定的HTTP状态码和头信息。这样,我们可以将异常信息转化为更友好的格式返回给客户端,同时也可以在这个过程中添加日志记录等额外操作。
评论已关闭