メソッドでいくつかのパラメータの検証を行い、必要に応じて例外をスローします。このタイプの例外を手動でスローする必要がありますか?呼び出し元がtry..catchブロックにラップされている限り、手動チェックが適所にあるかどうかにかかわらず、同様の例外がスローされます。このメソッドから例外をスローする必要がありますか?
public static Int16 ToInt16(this byte[] value, int startIndex, bool isBigEndian) {
// are these exceptions necessary?
if (value == null) {
throw new ArgumentNullException("value");
}
if ((startIndex + 1) >= value.Length) {
throw new ArgumentOutOfRangeException("startIndex");
}
return (isBigEndian)
? (Int16)((value[startIndex] << 8) | value[startIndex + 1])
: (Int16)((value[startIndex + 1] << 8) | value[startIndex]);
}
これは、ビッグエンディアンまたはリトルエンディアン変換を切り替える方法でInt16型にアレイ状に2つのバイトを変換するために使用される拡張メソッドです。
ParamNameでのみ両方の例外を作成することに注意してください。有用なメッセージを考えてみてください。 –
コメントありがとうございました。例外が残るべきであると全会一致であると思われる。彼が最初にスライドしてから、私のオフ・バイ・ワンの誤字を見つけたので、私はピーターの答えを受け入れました。 – user158485