[英]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.