try/catch/finally
或for
循环中有foreach
个阻止。
如果break
块中有try
语句会怎样?
会finally
阻止执行吗?
答案 0 :(得分:2)
是的,即使您有break
等跳转声明,最后也会遇到障碍。
通常,当控件离开时,finally块的语句会运行 try语句。控制权的转移可以由于正常执行,执行break,continue,goto或return语句,或者从try语句中传播异常而发生。
答案 1 :(得分:1)
会的。您可以尝试运行以下示例
static void Main(string[] args)
{
for (int i = 0; i < 5; i++)
{
try
{
Console.WriteLine(i);
if (i == 3)
break;
}
catch (Exception e)
{
}
finally
{
Console.WriteLine("finally");
}
}
Console.ReadKey();
}
答案 2 :(得分:1)
是的,它会被击中。这是您可以尝试的示例代码。
var intList = new List<int>{5};
foreach(var intItem in intList)
{
try
{
if(intItem == 5)
break;
}
catch(Exception e)
{
Console.WriteLine("Catch reached");
}
finally
{
Console.WriteLine("Finally reached");
}
}
输出:终于到达
答案 3 :(得分:1)
是的,它会点击finally
。 Try Me.
下面将确认我的答案:
using System;
public class Program
{
public static void Main()
{
for (int i = 0; i < 100; i++)
{
try
{
if (i == 10)
{
break;
}
Console.WriteLine(i);
}
catch
{
Console.WriteLine("Catch");
}
finally
{
Console.WriteLine("finally");
}
}
}
}
输出:
0
finally
1
finally
2
finally
3
finally
4
finally
5
finally
6
finally
7
finally
8
finally
9
finally
finally