Java SpringWebExceptionHandler命令
在我的SpringWebFlux应用程序中,我有一个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
@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
}
}
}
如果您希望在这里看到详细的答案,您可以有多个异常处理程序(每个异常)