尝试捕获执行

Posted

技术标签:

【中文标题】尝试捕获执行【英文标题】:Try catch execution 【发布时间】:2014-10-09 14:37:53 【问题描述】:

我的要求是在 try 块中有一个 foreach 循环,如下所示:

Try
Foreach file in folder1
line 1
line 2 // throw exception
line 3 
line 4
End Foreach
Catch Exception
   // do error logging

我的要求是,每当 foreach 循环内发生异常时,都不应终止执行。例如, 1.File1将被处理 2.文件2应该被处理,但是由于一些错误,catch stmt会被执行以记录错误信息 3.即使发生错误,文件3也应该被处理 请建议我使用 Vb.net 代码来执行上述步骤。

【问题讨论】:

【参考方案1】:

Try ... Catch 块放在For Each 块内,而不是放在外面:

For Each file In folder1
Try
    ' line 1 '
    ' line 2 ' // throw exception
    ' line 3 '
    ' line 4 '
Catch ex As Exception
    ' error logging '
End Try
Next file

顺便说一句,您发布的要求是矛盾的。如果您的处理引发异常,您希望“执行应该被终止”。然而“即使发生错误,文件 3 也应该被处理”,这表明执行不应该被终止。

此实现不会终止循环执行。

【讨论】:

【参考方案2】:
Foreach file in folder1
  Try
    line 1
    line 2 // throw exception
    line 3
  Catch Exception
    // do error logging
  End Try
End Foreach

您需要将 Try/Catch 块放在 ForEach 循环中,因为第一个 Excpetion 将结束循环

【讨论】:

不想吹毛求疵,但没有像 End Foreach 这样的东西。 :-) 我知道只是懒得像你一样让它成为真正的代码^^

以上是关于尝试捕获执行的主要内容,如果未能解决你的问题,请参考以下文章

Pyhton 异常

java尝试捕获并返回

当我尝试使用 Screengrab 捕获屏幕截图时,我在 fastlane 中的语言设置出现错误

尝试在 Postgres 中捕获等效项

尝试使用 C++ 中的锁进行捕获

转义闭包捕获非转义参数“函数” Xcode 说