是的,Spring Boot提供了一种简单的方式来处理多个异常类的异常情况。
例如,假设我们有两个自定义异常类MyExce
pt
ion1和MyExce
pt
ion2,分别表示两种不同的业务异常。我们可以将它们作为参数传递给@Exce
pt
ionHandler注解,如下所示:
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler({ MyException1.class, MyException2.class })
public ResponseEntity<ErrorInfo> handleMultipleExceptions(Exception ex) {
ErrorInfo error = new ErrorInfo();
error.setMessage(ex.getMessage());
error.setErrorCode(HttpStatus.INTERNAL_SERVER_ERROR.value());
return new ResponseEntity<>(error, HttpStatus.INTERNAL_SERVER_ERROR);
在这个示例中,我们将MyException1和MyException2作为数组传递给@ExceptionHandler注解。当我们抛出这两个异常中的任意一个时,Spring Boot将会调用handleMultipleExceptions方法来进行异常处理。
需要注意的是,当多个异常类具有相同的处理逻辑时,我们可以使用通用的Exception类来捕获所有的异常。但是在多个异常之间区分应该考虑使用自定义异常类,这样能更准确地指示异常原因。
除了@ControllerAdvice注解之外,我们还可以在控制器类中定义特定的@ExceptionHandler处理程序,以仅在该控制器中处理特定类型的异常。
@Controller
public class MyController {
@ExceptionHandler(MyException.class)
public ResponseEntity<ErrorInfo> handleMyException(MyException ex) {
ErrorInfo error = new ErrorInfo();
error.setMessage(ex.getMessage());
error.setErrorCode(HttpStatus.BAD_REQUEST.value());
return new ResponseEntity<>(error, HttpStatus.BAD_REQUEST);
这里我们只处理MyException异常,并使用一个特定的ResponseEntity作为返回结果(在这里是一个包含错误信息和错误代码的实体类)。
最后,无论哪种方式,我们都可以自由地选择返回哪种HTTP状态码或包含哪些响应信息。