解释为什么失败的最好方法

时间:2009-04-29 21:46:18

标签: c#

假设我在对象中有以下方法:

public class foo
{
    public bool DoSomethingAwesome()
    {
        bool bar = DidSomething() //suppose this sends an email;
        return bar;
    }

}

如果我想提供更多关于为什么DidSomething返回false的详细信息,那么最佳做法是将消息分配给foo,或者将Out参数分配给DoSomethingAwesome?

4 个答案:

答案 0 :(得分:5)

我认为这在很大程度上取决于您使用的框架(即它是一种惯例)。

  • 对于Win32 - 你有SetLastError, GetLastError函数。
  • 对于.NET,它通常是 抛出异常,但可能是 根据您的具体情况进行了更改。

可能一个外面的参数就可以了。

如果您决定使用Exception路由,MSDN会有一个带有“Design Guidelines for Exceptions”的条目。在“Framework Design Guidlines”一书中有一个很好的讨论 - 第7章,我强烈推荐!

答案 1 :(得分:2)

这在很大程度上取决于你正在做什么,但在给定的情况下 - 发送电子邮件 - 我会根据出错的方式抛出不同的例外情况。由于发送电子邮件应该每次都很有用,当发生不好的事情时,我想强制调用者处理它而不是默认忽略它。

在其他情况下,失败的可能性很高,可以忽略失败,或false并不一定意味着失败,我会创建一个enum,其中包含每种类型的值失败,一个成功,并返回而不是bool

答案 2 :(得分:1)

答案 3 :(得分:0)

如果错误条件不是“异常”(并非很少但均匀发生),那么您不应该使用异常。在这种情况下,使用out参数要好得多。