Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring启动异常处理程序一次获取所有异常_Java_Spring_Spring Boot_Exception - Fatal编程技术网

Java Spring启动异常处理程序一次获取所有异常

Java Spring启动异常处理程序一次获取所有异常,java,spring,spring-boot,exception,Java,Spring,Spring Boot,Exception,有没有一种方法可以一次捕获Spring引导异常处理程序中web请求引发的所有异常?我知道我可以在方法中捕获一个用@ExceptionHandler注释的异常类型数组,但这不是我所说的类型。我需要一个异常对象列表之类的东西。我已经试过了 @@ExceptionHandler({ MethodArgumentTypeMismatchException.class, ConstraintViolationException.class }) @ResponseBody private Error ha

有没有一种方法可以一次捕获Spring引导异常处理程序中web请求引发的所有异常?我知道我可以在方法中捕获一个用
@ExceptionHandler
注释的异常类型数组,但这不是我所说的类型。我需要一个异常对象列表之类的东西。我已经试过了

@@ExceptionHandler({ MethodArgumentTypeMismatchException.class, ConstraintViolationException.class })
@ResponseBody
private Error handleException(final List<Exception> ex, WebRequest request) {
...
}
但是,如果在同一请求中有不同的参数冲突,例如
ConstraintViolationException
MethodArgumentTypeMismatchException
,该怎么办


如果无法处理异常列表,如何满足RFC-7807的要求(请参阅)?这意味着:无论导致异常的原因是什么,我如何收集所有无效参数?

我不知道注释,但要捕获多个异常,您可以这样做(请记住,将执行第一个匹配的
catch
块):

@ResponseBody
公共MyError handleException(列出异常、WebRequest请求){
试一试{
//...
}捕获(ConstraintViolationException e){
//...
}捕获(MethodArgumentTypeMismatchException e){
//...
}
}

@ExceptionHandler
公共响应性句柄(异常ex){
// ...
}
您将捕获最常见的异常。然后你会被压制


您不能一次引发多个异常

您的请求在任何时候都只有一个异常,而不是多个如果您有多个错误,则只有其中一个(根据某些逻辑,第一个)会引发异常,而不是一次引发所有异常。你们想要一个能捕获spring boot应用程序中所有可能异常的方法吗?嘿,伙计们,谢谢你们的回复。听起来Spring Boot缺少这个功能。根据RFC 7807定义(请参阅),在400个错误的请求响应中提供“invalid params”字段是很有用的,该字段填充了所有违反的参数,无论原因是什么。在SpringBoot中有没有实现这一点的方法?我是否必须实现不同的异常处理程序而不是异常处理程序?
getsuppressed()
在异常处理程序的情况下返回空数组
java.lang.IllegalStateException: Could not resolve parameter [0] in private com.example.demo.model.Error com.example.demo.exception.MyExceptionHandler.handleException(java.util.List<java.lang.Exception>,org.springframework.web.context.request.WebRequest): No suitable resolver
@ExceptionHandler({ MethodArgumentTypeMismatchException.class, ConstraintViolationException.class })
@ResponseBody
private Error handleException(final Exception ex, WebRequest request) {
...
}
@ResponseBody
public MyError handleException(List<Throwable> exceptions, WebRequest request) {
    try {
        //...
    } catch (ConstraintViolationException e) {
        //...
    } catch (MethodArgumentTypeMismatchException e) {
        //...
    }
}
@ExceptionHandler
public ResponseEntity<String> handle(Exception ex) {
    // ...
}