我有几个方法可以进行相同类型的错误处理并希望对其进行重构。我的类中的所有方法X都调用binding.X了binding我的依赖类(第三方/Salesforce soap API,因此我们无法控制引发的异常类型)。X可以是create, update, delete, query. 对于所有这些方法,我必须检查异常代码是否为会话过期,然后再次登录并重试该方法。
public void create(SObject[] s){
try{
    binding.create(s);
 } catch (ApiFault e) {
    if(e.getExceptionCode == INVALID_SESSION_ID) {
               //login again
               login();
       //retry
       binding.create(s);
    }
 }
}
更新、删除遵循相同的模式。查询方法接受不同的参数。
public void query(String query){
    try{
        binding.query(query);
    } catch (ApiFault e) {
        if(e.getExceptionCode == INVALID_SESSION_ID) {
            //login again
               login();
           //retry on specific code
           binding.query(query);
        }
    }
}
所以我在每个方法中都放了重试INVALID_SESSION_ID的逻辑。有没有更好的方法来设计这些方法?