java - 在 Java 中以相同方式处理多个方法中的多个异常的最佳实践

标签 java exception

我有一个类ServerApi,其方法为callApiAcallApiB、... 每个方法都会返回 ServerApiResponse 的子类。 与服务器的通信由 HttpClient 管理。

有很多事情可能会出错,例如:

  • 服务器崩溃
  • 没有互联网连接
  • 超时

服务器也可以发送元响应,例如:

  • session 已过期
  • 服务器重载

现在我需要在一个地方处理所有这些情况。是否可以在所有callApiX方法中捕获Exception,并通过实例方法检查异常类型来在一个地方处理它,或者是否有任何异常更好的解决方案?

... callApiA(...){
    try{
        ...
    } catch(Exception e){
        return handleApiCallException(e);
    }
}

... callApiB(...){
    try{
        ...
    } catch(Exception e){
        return handleApiCallException(e);
    }
}

...

... callApiX(...){
    try{
        ...
    } catch(Exception e){
        return handleApiCallException(e);
    }
}

... handleAPiCallException(Exception e){
    if(e instance of IOException){
        ...
    } else if(e instanceof ...){
        ...
    } ...
}

最佳答案

当您捕获异常时,您并不总是想返回某些内容。我会做类似的事情:

catch (IOException | AnotherException | ... e) {
    //Handle exceptions here..
}

关于java - 在 Java 中以相同方式处理多个方法中的多个异常的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20353432/

相关文章:

java - gradle 构建本地工程。在 docker 容器中它没有。为什么?

java - 我怎样才能知道线程中断后还剩下多少时间可以 hibernate ?

c++ - 构造函数返回值中的异常

java - 修改 .csv 文件数据 JAVA 时遇到问题

java - 需要帮助理解 org.bouncycaSTLe.asn1.ASN1InputStream "java.io.IOException: DER length more than 4 bytes: 63"

java - DroidAR Marker 演示不工作

java - 如何在 XPage 系统事件中从文件系统中删除文件

java - GridView:应用程序可能在其主线程上做了太多工作。使用各种图像时跳过 x 帧错误

sql-server - MS SQL Server 强制转换无一异常(exception)

java - 我想计算代码将进行的迭代总数