データがデータベースにリンクされているため、最大長要件を持つ文字列プロパティがあります。呼び出し元がこの長さを超える文字列を設定しようとした場合、どのような例外をスローする必要がありますか?
たとえば、次の C# コード:
public string MyProperty
{
get
{
return _MyBackingField;
}
set
{
if (value.Length > 100)
throw new FooException("MyProperty has a maximum length of 100.");
_MyBackingField = value;
}
}
検討しましたArgumentException
が、それは適切ではないようです。技術的にはは関数なMyProperty_set(string value)
ので、 のケースをArgumentException
作成できますが、消費者の目には関数として呼び出されておらず、代入演算子の右側にあります。
この質問は、おそらくプロパティ セッターで実行されるあらゆる種類のデータ検証を含めるように拡張することもできますが、私は上記のケースに特に興味があります。
ベストアンサー1
Reflector を使用して mscorlib.dll を調べてください。System.String.StringBuilder.Capacity などの同様の状況では、Microsoft は次のような ArgumentOutOfRangeException() を使用します。
public int PropertyA
{
get
{
return //etc...
}
set
{
if (condition == true)
{
throw new ArgumentOutOfRangeException("value", "/* etc... */");
}
// ... etc
}
}