如何在保持for循环运行的情况下处理try catch块?
就我而言
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)出错,哪个catch块会捕获该异常?
答案 0 :(得分:0)
循环不会被杀死,因为您捕获异常,因此您的代码将继续运行。
另外,处理它的异常取决于发生异常的位置。
当发生异常时,异常将被传递回第一个可用的异常处理程序。
因此,如果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.
}