//
// To Throw
void PrintType(object obj)
{
if(obj == null)
{
throw new ArgumentNullException("obj")
}
Console.WriteLine(obj.GetType().Name);
}
//
// Not to Throw
void PrintType(object obj)
{
if(obj != null)
{
Console.WriteLine(obj.GetType().Name);
}
}坚持什么原则?
就我个人而言,我更喜欢first one,它说的是关于每一个“异常”的)。第二个,它说user-friendly(let用户继续工作,即使“内部”不是所有事情都是正确的)。
我认为,当您默默地让事情继续下去时,在维护阶段发现错误和错误会更加复杂。如果出了问题,您不会立即收到通知,有时会有错误远离主要错误原因,并花费大量时间来查找它。
你认为如何?
发布于 2010-03-25 11:57:38
如果方法主体正确地处理空obj (换句话说,obj != null不是一个要求),那么就没有必要抛出异常。
在所有其他情况下:抛出。让客户为他们有缺陷的输入承担责任。
发布于 2010-03-25 11:52:54
第二个是致命的。默默地失败永远是错误的。假设这是持有你账户的银行系统。如果你的薪水有问题,而系统却默默地忽略了它,你会喜欢它吗?
发布于 2010-03-25 12:06:16
抛出一个异常(如果null是一个错误)似乎要比默默地忽略一个错误好得多。
还有第三种选择,你可以考虑:
void PrintType(object obj)
{
Console.WriteLine(obj.GetType().Name);
}当obj为空时,这也会引发异常。这样做的好处是,所涉及的代码较少。这种方法的缺点是更难判断obj是否为空。
https://stackoverflow.com/questions/2515155
复制相似问题