程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 用finally清除違例

用finally清除違例

編輯:關於JAVA

無論一個違例是否在try塊中發生,我們經常都想執行一些特定的代碼。對一些特定的操作,經常都會遇到這種情況,但在恢復內存時一般都不需要(因為垃圾收集器會自動照料一切)。為達到這個目的,可在所有違例控制器的末尾使用一個finally從句(注釋④)。所以完整的違例控制小節象下面這個樣子:

try {
// 要保衛的區域:
// 可能“擲”出A,B,或C的危險情況
} catch (A a1) {
// 控制器 A
} catch (B b1) {
// 控制器 B
} catch (C c1) {
// 控制器 C
} finally {
// 每次都會發生的情況
}

④:C++違例控制未提供finally從句,因為它依賴構建器來達到這種清除效果。

為演示finally從句,請試驗下面這個程序:
 

//: FinallyWorks.java
// The finally clause is always executed

public class FinallyWorks {
  static int count = 0;
  public static void main(String[] args) {
    while(true) {
      try {
        // post-increment is zero first time:
        if(count++ == 0)
          throw new Exception();
        System.out.println("No exception");
      } catch(Exception e) {
        System.out.println("Exception thrown");
      } finally {
        System.out.println("in finally clause");
        if(count == 2) break; // out of "while"
      }
    }
  }
} ///:~


通過該程序,我們亦可知道如何應付Java違例(類似C++的違例)不允許我們恢復至違例產生地方的這一事實。若將自己的try塊置入一個循環內,就可建立一個條件,它必須在繼續程序之前滿足。亦可添加一個static計數器或者另一些設備,允許循環在放棄以前嘗試數種不同的方法。這樣一來,我們的程序可以變得更加“健壯”。
輸出如下:
 

Exception thrown
in finally clause
No exception
in finally clause


無論是否“擲”出一個違例,finally從句都會執行。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved