我有一个方法Foo()做了一些艰苦的工作,并在UI层我有一个按钮来调用该方法。
我想要做的就是调用方法并显示一个消息框,如果Foo()方法有问题。返回元组<布尔,字符串>而不是抛出异常()?
我有两个选择设计方法的签名:
1.Tuple
Tuple<bool, string> Foo()
{
if(!DoHardWorkA()) return Tuple.New(false, "cannot do hardwork A");
if(!DoHardWorkB()) return Tuple.New(false, "cannot do hardwork B");
return Tuple.New(true, String.Empty);
}
2.Exception
void Foo()
{
if(!DoHardWorkA()) throw new ProgramSpecificException("cannot do hardwork A");
if(!DoHardWorkB()) throw new ProgramSpecificException("cannot do hardwork B");
return Tuple.New(true, String.Empty);
}
两者DoHardWorkA()和DoHardWorkB()是外部方法那我没有控制他们,他们返回真/假表明结果。
从逻辑上说,我认为我应该选择2,因为它们确实是例外;但为了一致性,我想选择1.
您更喜欢哪一个,为什么?
这是C#去了?你应该用你使用的语言来标记你的问题。 – asawyer 2012-03-21 18:10:56
重要的问题是:*失败非常罕见,或常见?*如果它非常罕见,那么*抛出异常,然后处理它*。如果失败很常见,那么*返回报告失败性质的数据*并像处理其他任何数据一样处理数据。 – 2012-03-21 18:49:56