我有几个方法可以进行相同类型的错误处理并希望对其进行重构。我的类中的所有方法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的逻辑。有没有更好的方法来设计这些方法?