2010-12-16 16 views

答えて

10

"効率性"はここでは問題ではありません。

コードが処理できない状況に遭遇したとき(発信者に何かをさせたい)に例外がスローされます。

あなたが何かできることがあるときに例外をキャッチします(そして、それを再スローするか、別の例外もあります)。

エラー条件をチェックして後続の例外を回避するか、または単にコードを呼び出して後で例外を処理するかどうかを決定するときに、効率が重要になる可能性があります。ここでの経験則では、実行時のオーバーヘッドがかなり(実際にスローされると、キャッチブロックの純粋な存在にはコストがかからないため)例外が発生します。

+0

実際にキャッチブロックを使用するコストはかかりません。例外がスローされなくても、追加の例外指向のフレームを設定して破棄する際にオーバーヘッドがあったと考えています(実際のコードと比べると、おそらく小規模ですが)。 –

+0

Thiloありがとうございます。 – Mudassir

4

多くの人々が強い意見を持っている高度に議論されたトピックです。あなたがそれらについて何かを行うことができ、したがって、彼らはより多くの実行時例外をスローする場合は春のような人気のフレームワークのほとんどは、唯一の例外ハンドリングの哲学を信じて、いくつかの便利なリンク

http://www.ibm.com/developerworks/java/library/j-jtp05254.html

http://onjava.com/pub/a/onjava/2003/11/19/exceptions.html

。これは、チェックされた例外をスローしキャッチすることは、不要なコードを追加することになります。

まだキャッチがあります。アプリケーションのある時点(特にWebアプリケーションのサーブレットなど)に近いUIインタフェースレイヤーでは、あらゆる種類の例外を適切に処理して捕捉する必要があります。それ以外の場合、ユーザーは500エラーを表示しますが、これは間違いなく理想的なエクスペリエンスです。ある時点で、ユーザーに何が問題になったのかを伝えたいと思っています。ランタイム例外の場合は、不明なエラーを報告してログに記録し、システム管理者にトレースを送信してください。

したがって、アプリケーション全体で建設的な方法で処理して処理できる例外のみを処理します。ただし、アプリケーションのユーザーインターフェイスレイヤーに近い場合は、このルールの例外を設定してください。