は、私が取り組んできたプロジェクトのために、私たちはこのように見えるいくつかのブロックを持っています特定の「予想される」タイプの例外のみが含まれます。ジェネリック例外をより特定の例外タイプに置き換える?</p> <p>クラスA:</p> <pre><code>try { callSomeMethod(); } catch (Exception e) { throw new SomeCustomExceptionTypeForMetrics(""); } </code></pre> <p>しかし、私は、我々が持つ一般的な例外をキャッチするすべてのインスタンスを置き換えることを任務として
try {
if (someCondition...) {
}
else {
//failed
throw new RuntimeException("Timeout while waiting for results")
}
}
catch(InterruptedException e) {
// do some failure stuff here
throw new RuntimeException("Something here");
}
は、理想的には、私のグループは、可能な限り少しように変更するために私を求めている、と私は変更することはできません。
問題がcallSomeMethod(ある)は、この
クラスBのようなものを持っていますcallSomeMethod()のシグネチャですが、クラスAのRuntimeExceptionもキャッチする必要はありません。クラスBから例外を除くすべてのタイプのRuntimeExceptionをキャッチしたくないからです。
これを処理する最善の方法は何ですか?カスタムException
クラスにメソッドにRuntimeException
Sを変更し、クラスAに:
try {
callSomeMethod();
}
catch (Exception e) {
if(e instanceof CustomException)
//Log it or something, for metrics?
}
これはあなたのcallSomeMethod
の署名がthrows Exception
が含まれており、あなたはそれを変更することはできませんとすると
これらのRuntimeExeptionをより具体的なものに変更します。必要に応じてカスタムクラスを作成します。 –
私はこれを正しく理解しましたか?RuntimeExceptionsをキャッチするはずですが、明示的にJavaコード内のクラスBで「新しいRuntimeException()」をスローして、別の場所からのものを無視してスローされた場合のみですか? –
クラスBをオプションに変更していますか? – slambeth