Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.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 SpringWebExceptionHandler命令_Java_Spring_Spring Boot_Error Handling_Spring Webflux - Fatal编程技术网

Java SpringWebExceptionHandler命令

Java SpringWebExceptionHandler命令,java,spring,spring-boot,error-handling,spring-webflux,Java,Spring,Spring Boot,Error Handling,Spring Webflux,在我的SpringWebFlux应用程序中,我有一个@ControllerAdvice注释类,它实现了WebExceptionHandler,其@Order设置为-2,我的想法是将其作为一个全局异常处理程序 在这个类中,我检查接收到的可丢弃文件的类型,并以适当的方式进行处理,如下所示: @Component @Slf4j @Order(-2) @ControllerAdvice public class CustomWebExceptionHandler implements WebExcept

在我的SpringWebFlux应用程序中,我有一个
@ControllerAdvice
注释类,它实现了
WebExceptionHandler
,其
@Order
设置为-2,我的想法是将其作为一个全局异常处理程序

在这个类中,我检查接收到的
可丢弃文件的类型,并以适当的方式进行处理,如下所示:

@Component
@Slf4j
@Order(-2)
@ControllerAdvice
public class CustomWebExceptionHandler implements WebExceptionHandler {

    @Override
    public Mono<Void> handle(ServerWebExchange exchange, Throwable ex) {
           if (ex instanceof ResponseStatusException) {
                ... do something
           }
           if (ex instanceof DomainException) {
                ... do something else
           }
}
@组件
@Slf4j
@订单(-2)
@控制器建议
公共类CustomWebExceptionHandler实现WebExceptionHandler{
@凌驾
公共Mono句柄(ServerWebExchange,Throwable-ex){
如果(响应的实例除外){
…做点什么
}
如果(域异常的实例除外){
…做点别的
}
}
在其中一个“…do something”块中,我犯了一个错误,抛出了一个
IllegalArgumentException
。我原以为它会由同一个类处理,但它最终由
DefaultErrorWebExceptionHandler
处理,该类具有
@Order(-1)

我的问题是:有没有可能让我的
CustomWebExceptionHandler
来处理这个
IllegalArgumentException
呢?

我想你不需要在这里下订单,除非你有多个处理程序。从上面的代码中我看到你有一个
CustomWebExceptionHandler
ControllerAdvice注释de>。默认情况下,
@ControllerAdvice
中的方法全局应用于所有控制器。现在,要捕获这些目标控制器引发的所有异常,,只需使用参数throwable定义一个方法,
@ExceptionHandler
,类似的方法适用于您:

    @ControllerAdvice
    public class CustomWebExceptionHandler {
        @ExceptionHandler
        public ResponseEntity handleExceptions(Throwable ex)
        {
           if (ex instanceof ResponseStatusException) {
                ... do something
           }
           if (ex instanceof DomainException) {
                ... do something else
           }
        }
    }

您可以有多个异常处理程序(每个异常)如果您希望在这里看到详细的答案。

我认为您不需要在这里排序,除非您有多个处理程序。从上面的代码中,我看到您有一个
CustomWebExceptionHandler
注释为
ControllerAdvice
。默认情况下,
@ControllerAdvice
中的方法全局应用于所有控制器。现在应用于catch由目标控制器引发的所有异常您只需定义一个带有参数throwable的
@ExceptionHandler
的方法,类似这样的方法适用于您:

    @ControllerAdvice
    public class CustomWebExceptionHandler {
        @ExceptionHandler
        public ResponseEntity handleExceptions(Throwable ex)
        {
           if (ex instanceof ResponseStatusException) {
                ... do something
           }
           if (ex instanceof DomainException) {
                ... do something else
           }
        }
    }
如果您希望在这里看到详细的答案,您可以有多个异常处理程序(每个异常)