下位層からスローされた例外を処理するための適切な場所はどこですか..クラス内または可能な最悪のレベルで?または、ユースケースによって異なりますか?
1 に答える
あなたはこの投稿を見ることができます:
In particular it is now possible (and considered good practice) to set up a top-level exception handler that will handle any unexpected exception on the main thread in a Windows application. This means that it is no longer necessary to have exception handlers in every routine.
トップレベルの例外処理を実装する方法もご覧ください。
そして、Javaでの例外処理のための1つのリンクhttp://onjava.com/pub/a/onjava/2003/11/19/exceptions.html
したがって、あなたの質問に対する一般的な答えとして:はい、それはユースケース(単純な短いスクリプトまたは本格的なアプリケーション)に依存しますが、可能な限り例外処理を行うようにしてください。レベル、そしてそれをしている間、あなたがあなたのユーザーに提示するメッセージの「技術」を覚えておいてください(私を信じてください、メッセージ「メインスレッドのエラー31231241」はあなたのアプリケーションのユーザーフレンドリーを改善しません)。
編集:
スティーブマコネルも彼の有名なコードコンプリート2の本で述べているように、1つはすべきThrow exceptions on the right level of abstraction - for example if you have a getUser() method and you return IOException then that would be very bad.
ですしかし、はい、それは一般的な意味だと思います。また、他の関数が「ガベージ」を送信した場合にプログラム全体がクラッシュしないように関数を作成する必要があると彼は言います。
また、彼はアサーションの使用に賛成であり、次のように述べていますUse error handling code for the conditions you expect to occur; use assertions for conditions that should never occur
。
最後に、エラーに対処する際には、次の2つのアプローチを念頭に置く必要があると述べていrobustness
ますcorrectness
。この例の本で彼が語る物語は非常に鮮やかで、私がそれを読んだ後もずっと私の頭の中にとどまりました。「テキスト編集アプリケーション」を用意することを検討し、提示されたデータの正確さを考慮に入れてください。いくつかのピクセルが「ワイルドになる」と想像してみてください(計算を間違えるか、そのようになります)-そのようなことが起こった場合にアプリケーションを強制的に閉じることを考慮しないことは確かです。これはロバスト性と呼ばれます(動作を継続します)。しかし、X線操作アプリケーションを作成していると想像してください。この場合、「奇妙なデータ」は(McConnellが示唆するように)重大なエラーメッセージを表示するはずであり、あなたはあなたのアプリケーションで。
PSはCC2の部分を許しますが、私はその本が大好きで、すべての開発者がそれを(少なくとも1回は)読むべきだと思います。