关于最后块



我知道finally的目的是保证一些指令或清理代码得到执行。但是使用finally和将代码放在catch块之后的实际区别是什么呢?
我的意思是,给我一个例子,你需要使用finally,否则代码可能根本无法执行。

不管catch块中发生了什么,Finally都将执行。

catch(Exception E)
{
    ...
    throw new OtherException(BetterMessage, E);
}

catch { return null; }

catch { SomeMethodThatWillThrowAnException(); }

因此,即使返回或抛出异常以退出Catch块,仍将执行finally块,而try-catch之后的任何代码将被忽略。

无论如何最后执行。

public void test() {
    try { 
       int x = 0;
       return;
    } catch(Exception ex) { 
       ex.printStackTrace();
    } finally { 
      System.out.println("Hello from finally");
    }  
    System.out.println("Hello from after catch");
}

在这种情况下,"Hello from after catch"不会被打印出来,但是"Hello from finally"会被打印出来。

finally block无论如何都会触发,即使你throw and catch。位于catch之后的代码如果不在finally块中,则可能不会执行,例如,如果您的catch可能导致进程结束或应用程序崩溃。

无论是否抛出异常,都执行finally块。

你的问题是,使用finally和将代码放在catch之后的区别是什么。如果抛出异常,则不会执行catch块之后的代码。如果您将代码放在finally块中,它将。

可能会出现一些您无法捕获的异常。

finally块保证内部代码的执行,即使抛出意外异常。

相关内容

  • 没有找到相关文章

最新更新