1. 程式人生 > >Java 學習回顧(二)

Java 學習回顧(二)

(1)Java支援在一個類中宣告另一個類,這樣的類稱為內部類,而包含內部類的類稱為內部類的外嵌類。
(2)和某類有關的匿名類就是這類的一個子類,該子類沒有明顯地用類宣告來定義,所以稱為匿名類
(3)和某類有關的匿名類就是實現該介面的一個子類,該子類沒有明顯地用類宣告來定義,所以稱作匿名類
(4)Java的異常可以出現在方法呼叫過程中,即在方法呼叫的過程中丟擲異常物件,導致程式執行出現異常,並等
待處理。Java使用try-catch語句來處理異常,將可能出現的異常操作放在try-catch語句的try部分,當try部
分中的某個方法呼叫發生了異常後,try部分將立刻結束執行,轉向相應的catch部分。

接下來詳細講一下異常類:

Java使用throw關鍵字丟擲一個Exception子類的例項表示異常的發生。比如Integer.parseInt("ab12")會丟擲NumberFormatException物件,流物件呼叫read去讀取不存在的檔案,就會丟擲IOException。

異常物件可以下面方法輸出異常物件的資訊

public String getMessage();

public void printStackTrace();

public String toString();

try-catch語句與try-catch-finally語句

1.try-catch

try-catch是用來處理異常的,將可能出現異常的操作放在try裡面,一旦丟擲異常,轉向執行catch部分。try-catch語句可以由幾個catch組成,分別處理相應的異常。

try{
//可能發生異常的程式碼
}catch(ExceptionSubClass1 e) {
...
}catch(ExceptionSubClass2 e) {
...
}

try-catch-finally

try { //執行的程式碼,其中可能有異常。一旦發現異常,則立即跳到catch執行。否則不會執行catch裡面的內容 } 

catch { //除非try裡面執行程式碼發生了異常,否則這裡的程式碼不會執行 } 

finally { //不管什麼情況都會執行,包括try catch 裡面用了return ,可以理解為只要執行了try或者catch,就一定會執行 finally } 

注:如果try-catch結構中執行程式退出程式碼,即執行System.exit(0),則不執行finally子語句

public class test3 {
    
    public static void aMethod() throws Exception{
        try{
            throw new Exception();
        }finally{
            System.out.println("finally");
        }
    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub
     try{
         aMethod();
     }catch(Exception e){
         System.out.println("exception");
     }
     System.out.println("finish");
 

    }
 

}

無論是try裡面丟擲異常,還是丟擲異常進入catch處理,最終還是進入finally處理。

這一機制也非常有用:

比如資料庫連線模組中,無論try,還是catch,進行了return操作,都會執行finally,可以finally內部執行關閉資料庫連線操作。以便於釋放已經產生的連線,釋放資源。