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

时间:2013-12-03 14:11:12

标签: java exception

我的课程ServerApi包含方法callApiAcallApiB,... 每个方法都返回ServerApiResponse的子类。 与服务器的通信由HttpClient管理。

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

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

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

  • 会话已过期
  • 服务器已超载

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

... 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 ...){
        ...
    } ...
}

1 个答案:

答案 0 :(得分:4)

当您抓住 例外时,您并不总是希望return。我会做那样的事情:

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