首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >扔还是不扔

扔还是不扔
EN

Stack Overflow用户
提问于 2010-03-25 11:51:27
回答 14查看 712关注 0票数 17
代码语言:javascript
复制
//
// 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用户继续工作,即使“内部”不是所有事情都是正确的)。

我认为,当您默默地让事情继续下去时,在维护阶段发现错误和错误会更加复杂。如果出了问题,您不会立即收到通知,有时会有错误远离主要错误原因,并花费大量时间来查找它。

你认为如何?

EN

回答 14

Stack Overflow用户

回答已采纳

发布于 2010-03-25 11:57:38

如果方法主体正确地处理空obj (换句话说,obj != null不是一个要求),那么就没有必要抛出异常。

在所有其他情况下:抛出。让客户为他们有缺陷的输入承担责任。

票数 7
EN

Stack Overflow用户

发布于 2010-03-25 11:52:54

第二个是致命的。默默地失败永远是错误的。假设这是持有你账户的银行系统。如果你的薪水有问题,而系统却默默地忽略了它,你会喜欢它吗?

票数 33
EN

Stack Overflow用户

发布于 2010-03-25 12:06:16

抛出一个异常(如果null是一个错误)似乎要比默默地忽略一个错误好得多。

还有第三种选择,你可以考虑:

代码语言:javascript
复制
void PrintType(object obj)
{
    Console.WriteLine(obj.GetType().Name);
}

当obj为空时,这也会引发异常。这样做的好处是,所涉及的代码较少。这种方法的缺点是更难判断obj是否为空。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2515155

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档