2008-09-09 2 views

答えて

57

RP

System.ApplicationExceptionは、.NETフレームワークの一部であってはならないクラスです。

アプリケーション例外の「すべて」を潜在的にキャッチする可能性がありますが、パターンに従わず、価値がないという意味があります。

+2

MCTS 70-536試験のためのMicrosoft Pressの資料が明らかに反対の... gahを言うと信じられないほど信じ難い! –

+0

MS試験の書籍を絶対に信頼しないでください。私はそれらのうちのいくつかを読んだ - 常にエラーがいっぱい。 – user1068352

+0

これは実際に質問に答えるものではありません。カスタムアプリケーションの例外は '例外 'から継承するべきですか?もしそうなら、そう言うことができますか? –

18

ApplicationException considered uselessは、ApplicationExceptionに対して強く重要な引数です。

アップショット:使用しないでください。 Exceptionから派生します。

+0

うん、コンラートは、それが権利を有します。関連するメモ:有用な(または "ベストプラクティス")と考えられていたが、実際にはそうではないと思う[ICloneableの実装](http://blogs.msdn.com/brada/archive/2003/04/09/49935.aspx )。 – Craig

13

自体はApplicationExceptionをする価値がない考えるフレームワークの作者:疑いで、私は彼らの本フレームワークの設計に従った場合

http://blogs.msdn.com/kcwalina/archive/2006/07/05/657268.aspx

:ここでの素敵なフォローアップと

http://blogs.msdn.com/kcwalina/archive/2006/06/23/644822.aspx

をガイドライン。

http://www.amazon.com/Framework-Design-Guidelines-Conventions-Development/dp/0321246756

ブログ記事のトピックは、さらにそこに議論されています。 Frameworkの設計ガイドライン本のジェフリー・リヒターによると

1

私が行うために使用されています:

  • C#のコードシステムエラー、私は必要な修理:

    private void buttonFoo_Click() 
    { 
        try 
        { 
         foo(); 
        } 
        catch(ApplicationException ex) 
        { 
         Log.UserWarning(ex); 
         MessageVox.Show(ex.Message); 
        } 
        catch(Exception ex) 
        { 
         Log.CodeError(ex); 
         MessageBox.Show("Internal error."); 
        } 
    } 
    

    それが違いを行うことができます。

  • 私に訂正する必要のない「通常の」ユーザーエラーです。

ApplicationExceptionを使用することはお勧めできませんが、ApplicationExceptionパターンを尊重しないvery few classesが存在するため、うまくいきます。

+2

あなたが知っていることはごくわずかです。フレームワーク設計ガイドラインに従う人は、ApplicationExceptionから派生するものではありません。このパターンを維持したい場合は、MyApplicationExcptionBaseのような独自の型を作成し、そこからすべてのカスタム例外を派生させる必要があります。ガイドラインでは、派生した例外タイプをほとんど作成しないと言います。 –

+0

あなたの権利:今日、最初から始めなければならない場合、私は "UserError"例外を作成します。それにもかかわらず、私は古いコードをリファクタリングしません。非常に批判的ではありません。 –

21

System.Exceptionからカスタム例外を引き出す必要があります。

でもMSDNは今ApplicationExceptionを無視するように言う:

あなたは、独自の 例外を作成する必要があるアプリケーション を設計している場合、あなたは例外 クラスから カスタム例外を派生することをお勧めします。元々、 カスタム例外は、 ApplicationExceptionクラスから派生する必要があると考えられていました。 しかし、これは実際には ではありませんでした。 詳細については、Best Practices for Handling Exceptionsを参照してください。

http://msdn.microsoft.com/en-us/library/system.applicationexception.aspx

+1

見積もりでは、より明示的に編集されていますが、大丈夫です。 – Blorgbeard

関連する問題