在try catch失败的情况下执行方法

时间:2014-09-22 21:58:43

标签: c#

我有一些看起来像这样的代码:

string TheString = string.Empty;

try
{
  TheString = SomeDangerousMethod();
}
catch
{
  TheString = SomeSaferMethod();
}

return TheString;

事实证明SomeSaferMethod不是那么安全,在某些边缘情况下也会失败。出于这个原因,我创建了一个名为SuperSafeMethod的方法,如果SomeSaferMethod在catch语句中也失败,我想调用它。

我如何更改try catch,以便在SomeDangerousMethodSomeSaferMethod失败时触发第三级执行?

感谢。

2 个答案:

答案 0 :(得分:12)

也许可以使用嵌套的try/catch

try
{
    TheString = SomeDangerousMethod();
}
catch
{
  try
  {
      TheString = SomeSaferMethod();
  }
  catch
  {
      TheString = SuperSaferMethod();
  }
}

return TheString;

答案 1 :(得分:6)

您可以执行以下操作以避免嵌套。这允许您以更干净的方式使用任意数量的方法。

Func<string>[] methods = { SomeDangerousMethod, SomeSaferMethod, SuperSafeMethod };

foreach(var method in methods)
{
   try
   {
       TheString = method();
       break;
   }
   catch { }
} 

if (string.IsNullOrEmpty(TheString))
    throw new TooMuchUnsafetyException();