2011-07-25 3 views
4

を守る(#1)は私の直感は、#1は、のために良好であったということでした(#2)</p> ​​ <p>これとこれをリファクタリングについて、私は今日の議論を持っていた

public void MyFunc(object myArgument) 
{ 
    if(myArgument == null) 
     throw new ArgumentNullException("myArgument"); 
.... 

、C#で例外を投げます次の理由:

  1. #1だけで、基本的なC#の知識
  2. 、それはUtilのライブラリの知識を必要としないという意味で単純よりも第2位です
  3. #1は、ArgumentNullExceptionコンストラクタに渡された文字列の名前を変更するresharper機能を削除しません。
  4. #2は、コードの依存関係を増加します(DLLを含むDLLへのアクセス権を持っている必要があります)
  5. それは#1

私のためになるようスタックトレースは、#2のために同じではありません質問はここにあります: 私の直感は正しいですか? 別のアセンブリから例外をスローしているという事実は、いくつかのシナリオでは問題にならないでしょうか?

答えて

2

この特定のケースでは、とにかくGuardを使用しないでください。コード契約を使用する必要があります。あなたはまた、複数のプロジェクトである程度自分の例外処理の標準化で第2位の恩恵を受けることができる

Contract.Requires(myArgument != null); 
+0

これは実際にリリースビルドの場合と同じランタイムを実行しますか? –

+0

キャスパー・レオン・ニールセン:そうするように設定することができます。 – jason

2

。抽象化はまた、ライブラリーが後の時間に強化され、再配布されることを可能にする。たとえば、エラーログ。

関連する問題

 関連する問題