我在一個方法中執行一些參數驗證並在必要時拋出異常。我是否需要手動拋出這種類型的異常?只要調用者被包裝在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]);
}
這是用於在陣列轉換2個字節到Int16的一種方式來切換大端或小字節序變換的擴展方法。
請注意,您正在使用ParamName創建兩個例外,請嘗試考慮一條有用的消息。 – 2009-08-30 08:51:01
全部,感謝您的評論。似乎一致認爲例外應該保留。我先接受了彼得的回答,他先找到了我的錯字,然後找到了我的錯字。 – user158485 2009-08-30 20:30:24