繁体   English   中英

SpringBoot的异步处理中如何返回自定义错误页面

[英]How to return a custom error page in SpringBoot's asynchronous processing

我有一个关于 SpringBoot 中错误处理的问题。 有没有办法在使用@Async 注释的方法中发生异常时显示自定义错误页面? 我很高兴知道是否有。

我们目前正在 SpringBoot 中实现异步处理。 以下方法概述了异步处理。 我遇到了 Spring 的 SimpleAssyncUncaughtExceptionHandler 而不是捕获它的自定义 ExceptionHandler 的问题。

服务类。

@Service
@Slf4j
public class MyService {
     ...
     @Async
     public void myAsyncMethod(Intger req) throws MyException {
         if (req > 500) {
             log.error("request too large." + req);
             throw new MyException();
         }
         ...
         hogehoge(req);
     }
} 

ExceptionHandler 类

@ControllerAdvice
public class ExceptionController {
     
     @ExceptionHandler
     @RespondeStatus(HttpStatus.FORBIDDEN)
     public ModelAndView handleMyException(MyException e) {
         log.error(e.getMessage());
         return new ModelAndView("4xx.html");
     }
}

MyException 类(用于测试)

public class MyException extends Exception {
}

事实证明,这可以通过使用 DeferredResult 部分解决。 通过从 Handler 类传递 DefferdResult 并执行 setErrorResult() 暂时解决了这个问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM