2010-12-08 14 views
2

私はUnauthorizedAccessExceptionのようなシステム例外と自分自身で書いた例外があると言うことができます。例外をキャッチして使用する特定の順序はありますか?私はまだ最も具体的なものから最も具体的でないものまで、それを推測していますか?例外の捕捉順序は?

感謝:)

答えて

16
彼らが書かれたとして、順番に巻き込まれて

ので、最初最も具体的(例外タイプ間の継承の観点から)を入れました。

重要なのはタイプです(継承階層)。 2は、継承関係を(すなわち、それは、直接または間接的にUnauthorizedAccessExceptionからYourFunkyException継承とは限らない)持っていない場合、それは問題ではありません。 http://msdn.microsoft.com/en-us/library/ms229014.aspx

  • で "例外のためのデザインガイドライン" http://msdn.microsoft.com/en-us/library/5b2yeyab.aspxで "例外の処理とスロー"

  • 1

    はい、まずあなたのような「カスタム」例外をキャッチし、catch (Exception ex)を最後に他のすべてのタイプをキャッチするようにしてください。

    -2

    まず、システムレベルの例外の基本的な例外をキャッチする必要があります。次に、システムレベルの例外のラッパー(または継承者)であることを知っているこれらの例外は、あなたのカスタム例外です。上の何かをキャッチして根本的な例外が何かを知らない代わりに、エラーの根本的な原因をキャッチします。私にとって

    、私は典型的には、任意の例外をキャッチしないでしょう。..システムがエラーになることができるよう、例外がバブルアップし、その順序でそれらをキャッチしているように思われる順番を見つけるために、スタックトレースを表示します。

    - UPDATE 私はこのようなものを想定し、この答えをした。..

    tryブロック{

    // 1。システム例外

    // 2を介し可能性がIO操作をファイル。 Webサービスへのアクセスやカスタム例外

    } キャッチ(最初の可能なシステム例外) {} キャッチ(第2カスタム例外をキャッチ) {} キャッチ(例外例){ //キャッチを投げることができ、何か全て}

    順序は、(他の人が言ったように)..コードステートメントの順序と見ることができます。

    +0

    -1:絶対にありません。最も具体的なものを最も具体的でないもの(基本的なもの)に捉えます。 http://msdn.microsoft.com/en-us/libraryでhttp://msdn.microsoft.com/en-us/library/ms229014.aspxで「例外のための設計ガイドライン」を参照してくださいと「例外の処理とスロー」 /5b2yeyab.aspx。 – AMissico

    +0

    私が言っていたことを明確にするために上記の私の答えを更新しました。 –

    関連する問題