私は次のような機能を持っています
class Chainable {
public Chainable doStuff(String test) {
return doSomething(test, true);
}
public Chainable doStuff(String test, String test2) {
String toUse = test + test2;
return doSomething(toUse, false);
}
private Chainable doSomething(String test, boolean version) {
// do something
if (somethingBadHappened) {
throw SpecialException.generate();
}
return this;
}
}
SpecialException
ユーザーが見るはずの例外です。例外のメッセージには、この例外をスローしたメソッドが意図的に含まれています。ユーザーが呼び出しdoSomething("x")
、失敗した場合は が表示され"Method 'doSomething' failed with the parameters: 'test = x | version = true'"
ます。
doSomething(String, boolean)
しかし、ユーザーはメソッドとそのパラメーターを気にしません。彼doStuff(String)
はその機能のメッセージを使用しており、見たいと思っています。
だから私がすることは次のとおりです。
public Chainable doStuff(String test) {
try {
return doSomething(test, true);
} catch (SpecialException e) {
throw SpecialException.generate(e);
}
}
これにより、新しい例外の原因として e が設定され、正しく表示されます"Method 'doStuff' failed with the parameters: 'test = x'"
(ユーザーにはスタック トレースは表示されませんが、デバッグする必要がある場合は、正確に何が起こったかを確認できます)。
現在は機能していますが、作業をヘルパー関数に委譲する新しい関数を作成するたびに、同じことを繰り返す必要があります。SpecialException
問題は、生成された場所に応じてメソッド名を見つけるため、これにヘルパー関数を使用する方法がわからないことです...
これを行う別のより良い方法はありますか?