这个问题是如何指示方法不成功的后续问题。xxx() Tryxxx() 模式在许多库中都非常有用。我想知道在不复制代码的情况下提供两种实现的最佳方式是什么。
什么是最好的:
public int DoSomething(string a)
{
// might throw an exception
}
public bool TrySomething(string a, out result)
{
try
{
result = DoSomething(a)
return true;
}
catch (Exception)
{
return false;
}
或者
public int DoSomething(string a)
{
int result;
if (TrySomething(a, out result))
{
return result;
}
else
{
throw Exception(); // which exception?
}
}
public bool TrySomething(string a, out result)
{
//...
}
我本能地假设第一个示例更正确(您确切知道发生了哪个异常),但是 try/catch 不会太贵吗?有没有办法在第二个示例中捕获异常?