假设我在对象中有以下方法:
public class foo
{
public bool DoSomethingAwesome()
{
bool bar = DidSomething() //suppose this sends an email;
return bar;
}
}
如果我想提供更多关于为什么DidSomething返回false的详细信息,那么最佳做法是将消息分配给foo,或者将Out参数分配给DoSomethingAwesome?
答案 0 :(得分:5)
我认为这在很大程度上取决于您使用的框架(即它是一种惯例)。
可能一个外面的参数就可以了。
如果您决定使用Exception路由,MSDN会有一个带有“Design Guidelines for Exceptions”的条目。在“Framework Design Guidlines”一书中有一个很好的讨论 - 第7章,我强烈推荐!
答案 1 :(得分:2)
这在很大程度上取决于你正在做什么,但在给定的情况下 - 发送电子邮件 - 我会根据出错的方式抛出不同的例外情况。由于发送电子邮件应该每次都很有用,当发生不好的事情时,我想强制调用者处理它而不是默认忽略它。
在其他情况下,失败的可能性很高,可以忽略失败,或false
并不一定意味着失败,我会创建一个enum
,其中包含每种类型的值失败,一个成功,并返回而不是bool
。
答案 2 :(得分:1)
答案 3 :(得分:0)
如果错误条件不是“异常”(并非很少但均匀发生),那么您不应该使用异常。在这种情况下,使用out参数要好得多。