当前位置: 首页 > 知识库问答 >
问题:

如何处理CompletableFuture.supplyAsync抛出的异常

端木渝
2023-03-14

我有下面的代码块。我得到的是org.springframework.web.context.request.async.AsyncRequestTimeoutException的catch块没有处理它。有人能告诉我如何处理下面的Supply yAsync块抛出的异常吗?

 @org.springframework.scheduling.annotation.Async
    public CompletableFuture<ResponseEntity<?>> getTeam(String teamCode) {
        CompletableFuture.supplyAsync(() -> {
            CricketTeam team;
            try {
                team = service.getTeamInfo(teamCode);
            } catch (Exception ex) {
                Error error = new Error(500, ex.getMessage());
                return new ResponseEntity<>(error, HttpStatus.OK);
            }
            return new ResponseEntity<>(team, HttpStatus.OK);
        });

}

共有1个答案

柳联
2023-03-14

也许是这样的(你必须调整类型):

    CompletableFuture.supplyAsync(() -> possiblyFailingMethod())
            .exceptionally((e) ->
                    {
                        log.error("Something went wrong", e);
                        return "KO";
            });
 类似资料:
  • 我正在使用Spring4和Tomcat。问题是有时我不得不在我的筛选器中抛出一个(自定义的)RuntimeException(控件甚至还没有到达控制器)。问题是,由于我没有抛出tomcat理解的异常,它被转换为500(内部服务器错误)。我相信403禁止会比500好(对于我的定制例外)。我查看了和注释。但只有当控件到达控制器时,这些才起作用。 到目前为止,我在筛选器的中将状态手动设置为403。有没有

  • 虽然已经在响应拦截器里做了一些全局处理,最后是通过 Promise.reject 抛出的异常 现在每个接口请求方法都还是得写 try/catch 或者 .catch() 真的好麻烦 有什么比较好的方案吗?

  • 很简单的问题是,如何初始化可能引发构造函数异常的类成员变量? 显然,您不能在构造函数初始化器中尝试捕获异常,因此在构造函数中的try catch块中构造对象是否更合适? 这是一个顶级类,因此处理异常以让用户知道发生了什么并优雅地退出比让程序因异常而崩溃更重要? 但是,这不起作用,因为对象在构造函数内初始化之前初始化一次,因此如果对象引发异常,程序可能会崩溃。

  • 假设我有一个类和一个方法 现在,我想为由流传递的的每个实例调用foo,如下所示: 问题:如何正确处理异常?代码在我的机器上没有编译,因为我没有处理foo()可能引发的异常。的在这里似乎没有用。这是为什么?

  • 在你可以捕获异常之前,一些代码必须抛出一个异常。任何代码都可能会抛出异常:您的代码,来自其他人编写的包(例如Java平台附带的包)或Java运行时环境的代码。无论是什么引发的异常,它总是通过 throw 语句抛出。 您可能已经注意到,Java平台提供了许多异常类。所有类都是Throwable类的后代,并且都允许程序区分在程序执行期间可能发生的各种类型的异常。 您还可以创建自己的异常类来表示在您编写

  • 我需要拦截每个抛出的异常并对其进行处理。我正在使用这部分代码: 这个切入点似乎只影响公共方法(我想这是Spring AOP预期的?),但它只在某些方法中打印字符串,例如,在我的Spring配置类中声明的方法(我猜是因为它们在应用程序启动之前被初始化),而不是在其他方法中。 我试图让这方面为任何抛出的异常工作,但没有成功。这与我使用Spring AOP而不是完整的AspectJ有什么关系吗? 此外,