try
{
statement 1;
statement 2;
statement 3;
statement 4;
statement 5;
}
catch
{
}
Run Code Online (Sandbox Code Playgroud)
以上是典型的尝试.如果其中一个语句进入catch,则编码将跳过其余语句.
我想做的是......
让我们说,语句2有一个错误并进入异常,我仍然想在语句3,4和5上工作.
我只是好奇我怎么能实现这一目标?
最简单的答案是5次尝试.
但我认为这太幼稚了.
使用单独的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)