我有几种方法可以处理相同类型的错误,希望进行重构。我类中的所有方法
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的重试逻辑。是否有更好的设计这些方法的方式?