我已经创建了一个try块。我会再次尝试阻止try
阻止它finally
阻止。我关闭了外部尝试阻止。跟随finally
阻止。我不喜欢我想执行finally
块,因为我写了Environment.Exit(0)
。是否还有其他任何方法可以阻止execution.return 0;
(即java)中的块。请告诉我。
public static int Main()
{
try
{
Console.WriteLine("First try block");
try
{
Console.WriteLine("Second try block");
//exit(0);
Environment.Exit(0);
//return 0;
}
finally
{
Console.WriteLine("Finally block of inner try");
}
}
finally
{
Console.WriteLine("Finally block of second try");
}
答案 0 :(得分:2)
来自MSDN -
当控制离开try语句时,执行finally块的语句,是否由于正常执行,执行break,continue,goto或return语句或传播的传递而发生控制转移。 try语句中的异常。
答案 1 :(得分:2)
您可以使用Environment.FailFast()立即退出应用程序,同时跳过最终和终结器。
答案 2 :(得分:0)
可以使用一个try块和几个catch块。如果一种类型的异常需要某些操作,您可以将它们输入到该块中,并将最后一个块留空。
答案 3 :(得分:0)
您不能 - finally
块总是执行,除非由于某种原因JVM在它到达之前退出。 Link from MSDN
无论如何,我不太清楚你为什么要这样做。听起来你可能需要稍微改变你的设计。
答案 4 :(得分:0)
替代:
使用布尔值来确定调用finally
块中的哪些代码。
public static int Main()
{
bool complete = false;
try
{
Console.WriteLine("First try block");
try
{
Console.WriteLine("Second try block");
//exit(0);
//Environment.Exit(0);
return 0;
}
finally
{
Console.WriteLine("Finally block of inner try");
}
}
finally
{
if (complete)
{
Console.WriteLine("Finally block of second try");
}
}
}
确保在某处设置complete
变量。
答案 5 :(得分:-3)
static void Main(string[] args)
{
try
{
int a = 10/0;
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
finally
{
while (true)
{
Console.WriteLine("Statement 1");
break;
Console.WriteLine("Statement 2");
}
}
Console.ReadLine();
}