【发布时间】:2010-11-19 21:58:13
【问题描述】:
是否可以更改此代码,带有返回值和异常:
public Foo Bar(Bar b)
{
if(b.Success)
{
return b;
}
else
{
throw n.Exception;
}
}
对此,成功和失败分别抛出异常
public Foo Bar(Bar b)
{
throw b.Success ? new BarException(b) : new FooException();
}
try
{
Bar(b)
}
catch(BarException bex)
{
return ex.Bar;
}
catch(FooException fex)
{
Console.WriteLine(fex.Message);
}
【问题讨论】:
-
这似乎是stackoverflow.com/questions/99683/…的功能副本
-
无论答案如何,重要的是要记住成本与整个程序相关。当您 100% 的时间抛出异常时,您可能会发现 3 行代码块的成本要高出 1000 倍。但现实情况是,在执行数据库调用或读取文件等操作的解决方案中,可能只有 1% 的时间会抛出异常。
标签: c# .net exception exception-handling return-value