例外をスローするべきか、呼び出すべきか迷っていますContract.Requires<TException>
例えば:
public static void Function(String str)
{
if (str == null) throw new ArgumentNullException("str", "Input string cannot be null.");
// ...
}
対
public static void Function(String str)
{
Contract.Requires<ArgumentNullException>(str != null, "Input string cannot be null.");
// ...
}
Contract.Requires<TException>
はシンボルを必要としないため、CONTRACTS_FULL
リリース ビルドでも保持できます。
これは私の考慮事項です:
短所:カスタム例外型コンストラクターのオーバーロードされたバージョンを呼び出すことはできません。追加のパラメーターをコンストラクターに渡す方法はまったくありません。
長所:静的ツールのサポート (呼び出し元に契約違反を通知するなど)。
どちらを使用すればよいですか? また、どのような場合に使用しますか?