处理for循环中的结构try catch块

本文关键字:try catch 结构 for 循环 处理 | 更新日期: 2023-09-27 18:09:10

如何处理try catch块与保持for循环运行?

In my case

foreach (var str in strArr)
{
    try
   {
       var s1 = gets1(str);
       try
      {
          var s2 = gets2(s1);
      }
      catch (Exception ex)
      {
          myLog(ex.message);
      }
   }
   catch (Exception ex)
   {
       myLog(ex.message);
   }
}
1)

问题

如果发生异常,则终止foreach循环。

2)

问题

如果gets2(s1)得到错误,哪个捕获块将捕获该异常?

处理for循环中的结构try catch块

循环不会被终止,因为您捕获了异常,所以代码将继续运行。

也是re异常处理,它取决于异常发生的位置。

当异常发生时,异常将被传递回第一个可用的异常处理程序。

如果S2有异常它会在这里被捕获,

try
  {
      var s2 = gets2(s1);
  }
  catch (Exception ex)
  {
      myLog(ex.message);
      Exception caught here
  }

同样,如果你的异常是在你第二次尝试

之前引起的
 try
 {
   var s1 = gets1(str);
   Exception Caught here
   ....
   other try... 
 }
 catch (Exception ex)
 {
   myLog(ex.message);
   Exception would be caught here. 
 }