同じタイプのエラー処理を行うメソッドがいくつかあり、それをリファクタリングしたいと考えています。私のクラスのすべてのメソッドは、私の依存関係クラス (サード パーティ/Salesforce SOAP APIであるため、スローされる例外のタイプを制御できません) をX
呼び出します。、、、のいずれかです。これらすべてのメソッドについて、例外コードがセッションの有効期限が切れているかどうかを確認してから、再度ログインしてメソッドを再試行する必要があります。binding.X
binding
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);
}
}
}
更新、削除についても同じパターンに従います。Query メソッドはさまざまな引数を受け入れます。
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 を再試行するロジックを入れました。これらのメソッドを設計するより良い方法はありますか?