Spring @ExceptionHandler处理多种异常

lis*_*sak 23 spring exception

我无法弄清楚如何通过@ExceptionHandler处理多种异常.

我需要以编程方式处理这些异常,为此我需要一个共享引用.这是通过这个参考"Exception ex"完成的吗?我不这么认为,因为异常没有像这样被抓住,我怎么办呢?

我不能将所有异常引用作为参数提供给处理程序方法,它没有意义,它不能以编程方式处理.我需要一个共享引用,以便我可以在其上使用"instanceof"或者只是将其作为一般"异常"发送到其他地方

@ExceptionHandler({DescriptionCstOrderException.class, SpecializationCstOrderException.class, NoUploadFileException.class,
                    DeadLineCstOrderException.class, DocumentCstOrderException.class, CommentCstOrderException.class})
public String handleFormException(Exception ex, ActionRequest actionRequest) {
    logger.error(ex.getMessage());
    SessionErrors.add(actionRequest, ex.getClass().getName());  
    return "mainOrderForm";
  }
Run Code Online (Sandbox Code Playgroud)

其他问题:如果我想处理org.springframework.web.multipart.MaxUploadSizeExceededException,该处理程序的任何方法都不会抛出该怎么办?因为@ExceptionHandler只捕获从其中一个处理程序方法抛出的异常.

exceptionHandler方法可以放在一些扩展的父控制器中但是如果只使用defaultAnnotationHandlerMapping ...?

感谢任何帮助,我会发疯,这是非常令人沮丧的....

Ars*_*sal 34

@ExceptionHandler值可以设置为Exception类型的数组.

使用Spring 文档中提到的异常数组的实现就像

@ExceptionHandler


Nim*_*sky 21

@ExceptionHandler值可以设置为Exception类型的数组.如果抛出的异常与列表中的某个类型匹配,则将调用使用匹配的@ExceptionHandler注释的方法.如果未设置注释值,则使用列为方法参数的异常类型.有关详细信息,请参阅文档