在try-catch都失败的情况下执行一个方法
本文关键字:一个 方法 执行 try-catch 失败 情况下 | 更新日期: 2023-09-27 18:23:54
我有一些代码如下所示:
string TheString = string.Empty;
try
{
TheString = SomeDangerousMethod();
}
catch
{
TheString = SomeSaferMethod();
}
return TheString;
结果表明,SomeSaferMethod
并不那么安全,在某些边缘情况下也可能发生故障。因此,我创建了一个名为SuperSafeMethod
的方法,以防SomeSaferMethod
在catch语句中也失败。
如何更改try-catch,以便在SomeDangerousMethod
和SomeSaferMethod
都失败时触发第三级执行?
也许可以使用嵌套的try/catch
:
try
{
TheString = SomeDangerousMethod();
}
catch
{
try
{
TheString = SomeSaferMethod();
}
catch
{
TheString = SuperSaferMethod();
}
}
return TheString;
您可以执行以下操作来避免嵌套。这允许您以更干净的方式使用任意多的方法。
Func<string>[] methods = { SomeDangerousMethod, SomeSaferMethod, SuperSafeMethod };
foreach(var method in methods)
{
try
{
TheString = method();
break;
}
catch { }
}
if (string.IsNullOrEmpty(TheString))
throw new TooMuchUnsafetyException();