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 {
// 处理所有的自定义异常
@ExceptionHandler(CustomException.class)
@ResponseStatus(HttpStatus.BAD_REQUEST)
public String handleCustomException(CustomException e) {
// 这里可以记录日志,返回错误信息等
return e.getMessage();
}
// 处理其他异常
@ExceptionHandler(Exception.class)
@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
public String handleOtherException(Exception e) {
// 这里可以记录日志,返回错误信息等
return "An internal server error occurred";
}
}
// 自定义异常类
class CustomException extends RuntimeException {
public CustomException(String message) {
super(message);
}
}
这个代码示例展示了如何在Spring Boot应用中创建一个全局异常处理器来处理自定义异常和其他异常。通过@ControllerAdvice
注解,我们可以定义全局异常处理方法,并使用@ExceptionHandler
注解来指定需要处理的异常类型。通过@ResponseStatus
注解,我们可以指定返回的HTTP状态码。这种做法有助于提高代码的模块化和可维护性。