我在一个方法中执行一些参数验证并在必要时抛出异常。我是否需要手动抛出这种类型的异常?只要调用者被包装在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