.NETソリューションで例外クラスを作成する場合のベストプラクティス:System.Exception
またはSystem.ApplicationException
から派生させるには?.NETでExceptionまたはApplicationExceptionからカスタム例外を派生する必要がありますか?
答えて
RP
:
System.ApplicationException
は、.NETフレームワークの一部であってはならないクラスです。
アプリケーション例外の「すべて」を潜在的にキャッチする可能性がありますが、パターンに従わず、価値がないという意味があります。
ApplicationException
considered uselessは、ApplicationException
に対して強く重要な引数です。
アップショット:使用しないでください。 Exception
から派生します。
うん、コンラートは、それが権利を有します。関連するメモ:有用な(または "ベストプラクティス")と考えられていたが、実際にはそうではないと思う[ICloneableの実装](http://blogs.msdn.com/brada/archive/2003/04/09/49935.aspx )。 – Craig
自体は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の設計ガイドライン本のジェフリー・リヒターによると
私が行うために使用されています:
- 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が存在するため、うまくいきます。
あなたが知っていることはごくわずかです。フレームワーク設計ガイドラインに従う人は、ApplicationExceptionから派生するものではありません。このパターンを維持したい場合は、MyApplicationExcptionBaseのような独自の型を作成し、そこからすべてのカスタム例外を派生させる必要があります。ガイドラインでは、派生した例外タイプをほとんど作成しないと言います。 –
あなたの権利:今日、最初から始めなければならない場合、私は "UserError"例外を作成します。それにもかかわらず、私は古いコードをリファクタリングしません。非常に批判的ではありません。 –
System.Exception
からカスタム例外を引き出す必要があります。
でもMSDNは今ApplicationException
を無視するように言う:
あなたは、独自の 例外を作成する必要があるアプリケーション を設計している場合、あなたは例外 クラスから カスタム例外を派生することをお勧めします。元々、 カスタム例外は、 ApplicationExceptionクラスから派生する必要があると考えられていました。 しかし、これは実際には ではありませんでした。 詳細については、Best Practices for Handling Exceptionsを参照してください。
http://msdn.microsoft.com/en-us/library/system.applicationexception.aspx
見積もりでは、より明示的に編集されていますが、大丈夫です。 – Blorgbeard
- 1. カスタム例外クラス - ランタイム例外または例外を拡張する必要がありますか?
- 2. std :: exceptionから派生しました
- 3. PartialViewはWebViewPageエラーから派生する必要があります
- 4. FileNotFoundError例外を実装する必要がありますか?
- 5. 派生クラスのコンストラクタは、ベースキーワードを使用する必要がありますか?
- 6. このメソッドから例外をスローする必要がありますか?
- 7. C#例外なくループする必要がありますか?
- 8. Pythonでどのくらいの頻度でカスタム例外を定義する必要がありますか?
- 9. ビューはWebViewPageまたはWebViewPageから派生する必要があります<TModel>
- 10. 未処理の例外が発生した場合は、WPFアプリケーションをシャットダウンする必要がありますか?
- 11. 例外の処理は、それぞれの例外を捕らえる必要がありますか?
- 12. サービス層は例外をスローする必要がありますか?
- 13. System.IFormattable.Format(...)の実装は例外をスローする必要がありますか?
- 14. 例外仕様に基本型がある場合、関数は派生クラス例外をスローできますか?
- 15. .Net 4.5:IDataErrorInfoまたはINotifyDataErrorInfoを使用する必要がありますか?
- 16. 私は常に例外を[シリアル化可能]にする必要がありますか? (.NET)
- 17. 例外はいつ文書化する必要がありますか?
- 18. .NET例外:各例外タイプには独自のメッセージテキストがありますか?
- 19. PHPまたはMySQLでIDを生成する必要がありますか?
- 20. すべての例外をキャッチする必要がありますか?
- 21. Mediaelement.jsオーディオからDurationをカスタムで削除する必要があります
- 22. 重複を確認するか、データベースから例外をキャッチする必要がありますか?
- 23. Global.asaxのApplication_Errorハンドラで発生する例外をスローする必要がありますか?
- 24. データアクセスオブジェクト(DAO)のメソッドで例外をスローまたはキャッチする必要がありますか?
- 25. EnityManagerのクエリの例外をキャッチする必要がありますか?
- 26. カスタムNSURLProtocolはリダイレクトされる必要がありますか、またはクライアントがそれを心配する必要がありますか?
- 27. オブジェクト指向理論では、派生クラスが親オブジェクトのインターフェイスを継承する必要がありますか?
- 28. アプレットまたはアプリケーションがエラー例外を検出する必要がありますか?
- 29. バイナリは.NET Exception派生クラスをシリアル化します。 FluentAssertionsによるユニットテスト
- 30. ニューラルネットワーク - すべての派生/計算された変数を削除する必要がありますか?
MCTS 70-536試験のためのMicrosoft Pressの資料が明らかに反対の... gahを言うと信じられないほど信じ難い! –
MS試験の書籍を絶対に信頼しないでください。私はそれらのうちのいくつかを読んだ - 常にエラーがいっぱい。 – user1068352
これは実際に質問に答えるものではありません。カスタムアプリケーションの例外は '例外 'から継承するべきですか?もしそうなら、そう言うことができますか? –