国产探花免费观看_亚洲丰满少妇自慰呻吟_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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 兴国县| 陆川县| 哈尔滨市| 乃东县| 永康市| 砚山县| 三门县| 镇康县| 佛教| 荔浦县| 乌拉特中旗| 曲靖市| 玉田县| 潢川县| 湖南省| 宁波市| 泊头市| 观塘区| 莫力| 仙居县| 黄龙县| 四平市| 达孜县| 凤城市| 五家渠市| 凤凰县| 柳河县| 上饶县| 论坛| 福建省| 石台县| 济阳县| 呼和浩特市| 临海市| 康定县| 兴业县| 新余市| 沧源| 吉水县| 乐都县| 怀宁县|