这类情况的异常处理模式?

Pet*_*r D 2 java exception

我有来自2个不同公司的2个API,允许我与他们的服务器通信以处理事务.我的任务是创建这些API的通用接口.我提出了这样的事情:

IServiceProvider <- ServiceProvider <- CompanyAServiceProvider
IServiceProvider <- ServiceProvider <- CompanyBServiceProvider
Run Code Online (Sandbox Code Playgroud)

CompanyAServiceProvider我使用他们提供的API与他们的远程服务器接口.A公司的这个API会抛出与公司B完全不同的例外情况.

我可以在本地处理异常,但我真的不认为套件的情况.

public String purchase(String amount) {
  try {
    request = new Request( RequestIF.NEW_ORDER_TRANSACTION );
  } catch ( InitializationException e ) {
    //do something.
  }
}
Run Code Online (Sandbox Code Playgroud)

或者我可以将此异常抛给调用者:

public String purchase(String amount) throws Exception {
  request = new Request( RequestIF.NEW_ORDER_TRANSACTION );
}
Run Code Online (Sandbox Code Playgroud)

并且让调用者只处理Exception该异常,无论API抛出什么.

当我处理2组不同的抛出异常时,如何编写2个不同API的接口并使其保持通用.我正确地处理了这件事吗?什么是最好的选择?

aka*_*okd 14

在这种情况下,我创建自己的Exception sublcass并只包装实际的异常.我的API然后只暴露我的异常.

  • 如果要传递原始异常的语义,可以根据原始自定义异常创建多个异常类:MyException,Failure1Exception扩展MyException等.然后,您可以在方法上声明MyException或列出Failure1Exception,Failure2Exception等. (2认同)