国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

詳解Java異常處理中finally子句的運用

2019-11-26 14:57:31
字體:
來源:轉載
供稿:網友

當異常被拋出,通常方法的執行將作一個陡峭的非線性的轉向。依賴于方法是怎樣編碼的,異常甚至可以導致方法過早返回。這在一些方法中是一個問題。例如,如果一個方法打開一個文件項并關閉,然后退出,你不希望關閉文件的代碼被異常處理機制旁路。finally關鍵字為處理這種意外而設計。

finally創建一個代碼塊。該代碼塊在一個try/catch 塊完成之后另一個try/catch出現之前執行。finally塊無論有沒有異常拋出都會執行。如果異常被拋出,finally甚至是在沒有與該異常相匹配的catch子句情況下也將執行。一個方法將從一個try/catch塊返回到調用程序的任何時候,經過一個未捕獲的異常或者是一個明確的返回語句,finally子句在方法返回之前仍將執行。這在關閉文件句柄和釋放任何在方法開始時被分配的其他資源是很有用的。finally子句是可選項,可以有也可以無。然而每一個try語句至少需要一個catch或finally子句。

下面的例子顯示了3種不同的退出方法。每一個都執行了finally子句:

// Demonstrate finally.class FinallyDemo {  // Through an exception out of the method.  static void procA() {    try {      System.out.println("inside procA");      throw new RuntimeException("demo");    } finally {      System.out.println("procA's finally");    }  }  // Return from within a try block.  static void procB() {    try {      System.out.println("inside procB");      return;    } finally {      System.out.println("procB's finally");    }  }  // Execute a try block normally.  static void procC() {    try {      System.out.println("inside procC");    } finally {      System.out.println("procC's finally");    }  }  public static void main(String args[]) {    try {     procA();    } catch (Exception e) {     System.out.println("Exception caught");    }    procB();    procC();  }}

該例中,procA( )過早地通過拋出一個異常中斷了try。Finally子句在退出時執行。procB( )的try語句通過一個return語句退出。在procB( )返回之前finally子句執行。在procC()中,try語句正常執行,沒有錯誤。然而,finally塊仍將執行。

注意:如果finally塊與一個try聯合使用,finally塊將在try結束之前執行。

下面是上述程序產生的輸出:

inside procAprocA's finallyException caughtinside procBprocB's finallyinside procCprocC's finally

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 枣强县| 南江县| 临颍县| 海安县| 大冶市| 崇州市| 毕节市| 台中县| 来宾市| 潞西市| 肥乡县| 张家港市| 阜新市| 宁明县| 耿马| 马尔康县| 峨眉山市| 梨树县| 洱源县| 穆棱市| 台东市| 南靖县| 砚山县| 乐东| 临清市| 伽师县| 乌拉特前旗| 吴忠市| 高淳县| 盘锦市| 定西市| 成安县| 长子县| 孟连| 中宁县| 响水县| 洛宁县| 日照市| 双鸭山市| 教育| 阜新|