如何在C#中恢复异常计算?

wil*_*iam 2 c#

try
{
    statement 1;
    statement 2;
    statement 3;
    statement 4;
    statement 5;
}
catch
{
}
Run Code Online (Sandbox Code Playgroud)

以上是典型的尝试.如果其中一个语句进入catch,则编码将跳过其余语句.

我想做的是......

让我们说,语句2有一个错误并进入异常,我仍然想在语句3,4和5上工作.

我只是好奇我怎么能实现这一目标?

最简单的答案是5次尝试.

但我认为这太幼稚了.

Tom*_*cek 6

使用单独的try .. catch构造通常是最好的事情,因为您应该处理最具体的异常(对于不同的语句可能会有所不同).此外,异常可能会创建无效状态,因此继续可能不是最好的事情.

如果您只是在寻找一种更简单的语法来编写它,并且您需要重复相同的异常处理,那么您可以使用lambdas并编写如下内容:

CallWithCatch
 ( () => statement1,
   () => statement2,
   () => statement3,
   /* ... */ );
Run Code Online (Sandbox Code Playgroud)

其中定义CallWithCatch如下:

void CallWithCatch(params Action[] statements) {
  foreach(var statement in statements) { 
    try { 
      statement();
    } catch(/* your exception */) {
      // your exception handler
    }
  }
}
Run Code Online (Sandbox Code Playgroud)