为什么我的"终于"不会跑了?

Dis*_*ive 4 try-catch-finally c#-4.0

我假设我在这里遗漏了一些非常微不足道的东西,但由于理由这对我来说并不明显.我总是假设"最终"总是执行,无论是否有异常.

无论如何,这段代码无法运行,我不知道为什么.它到达i = i/j并抛出DivideByZero异常,但我认为它会继续并在停止之前执行finally语句.

static void Main(string[] args)
{
    int i = 1;

    try
    {
        int j = 0;
        i = i / j;

        Console.WriteLine("can't get");
    }
    finally
    {
        Console.WriteLine("finally ran");
    }
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*all 5

看看这个MSDN try-finally(C#参考)

从上面的链接:

通常,当未处理的异常结束应用程序时,无论finally块是否运行都不重要.但是,如果在finally块中有语句,即使在这种情况下也必须运行,一种解决方案是在try-finally语句中添加一个catch块.