1. 程式人生 > 實用技巧 >瀏覽器事件之事件處理程式

瀏覽器事件之事件處理程式

一、異常概念:

指的是程式在執行過程中,出現的非正常的情況,最終會導致JVM的非正常停止。

二、異常體系以及分類:

異常本身是一個類,產生異常就是建立異常物件並丟擲了一個異常物件。

Java處理異常的方式是中斷處理。

java.Lang.Throwable:類是Java語言中所有錯誤或異常的超類。

Exception:編譯異常,進行編譯(寫程式碼)java程式出現的問題

RuntimeException:執行期異常,java程式執行過程中出現的問題異常就相當於程式得了一個小毛病,把異常處理掉,程式可以繼續執行。

Error:錯誤就相當於程式得了一個無法治癒的毛病,必須修改原始碼,程式才能繼續執行;如:建立的陣列超出了給JVM分配的記憶體

異常的處理:(五個關鍵字:try、catch、finally、throw、throws)

三、異常的產生過程解析:

如果沒有一處對異常進行處理,

1.那異常會先產生於異常處;

2.誰呼叫該有異常的方法就拋給誰,

3.方法進行處理最終會丟擲給JVM,JVM會輸出異常並終止專案

異常的產生過程解析圖:

四、throw關鍵字

throw關鍵字作用:

1.可以使用throw關鍵字在指定的方法中丟擲指定的異常,

2.throw關鍵字是隻能處理RuntimeException或者是RuntimeException的子類物件的異常物件!

並不能處理編譯器異常!

使用格式:

throw new xxxException("異常產生的原因");

注意:

1. throw關鍵字必須寫在方法的內部

2. throw關鍵字後邊new的物件必須是Exception或者Exception的子類物件

3. throw關鍵字丟擲指定的異常物件,我們就自己必須處理這個異常物件((列印異常物件)

4.Throw關鍵字後邊建立的是RuntimeException或者是RuntimeException的子類物件,我們可以不處理,預設交給Jvm處理(列印異常物件,中斷程式 )

5.throw關鍵字後邊建立的是編譯異常(寫程式碼的時候報錯),我們就必須處理這個異常,要麼throws,要麼try...catch

Objects非空判斷_requireNonNull(作用:對方法引數進行非空判斷,null就丟擲空指標異常)

五、throws關鍵字

throws編譯異常處理方式:

交給別人處理,可起到通知別人有異常並要求別人進行接收該異常

throws作用:

當方法內部丟擲異常物件的時候,那麼我們就必須處理這個異常物件

可以使用throws關鍵字處理異常物件,會把異常物件宣告丟擲給方法的呼叫者處理(自己不處理,給別人處理),最終交給JVM處理-->中斷處理

使用格式: (在方法宣告時使用)

修飾符 返回值型別 方法名(引數列表) throws AAAExcepiton, BBBExcepiton...{

throw new AAAExCepiton ("產生原因");throw new BBBExcepiton("產生原因");..

}

注意

1.throws關鍵字必須寫在方法宣告處

2.throws關鍵字後邊宣告的異常必須是Exception或者是Exception的子類

3.方法內部如果丟擲了多個異常物件,那麼throws後邊必須也宣告多個異常

如果丟擲的多個異常物件有子父類關係,那麼直接宣告父類異常即可

4,呼叫了一個宣告丟擲異常的方法,我們就必須的處理宣告的異常

要麼繼續使用throws宣告丟擲,交給方法的呼叫者處理,最終交給JVM

要麼try...catch自己處理異常

缺點:

throws丟擲異常後就中斷處理,後面的程式碼就不再執行

六、try_catch_關鍵字

try_catch_編譯異常處理方式:

自己處理異常,不會拋給別人

格式:

try{

可能產生異常的程式碼

}catch(異常類名 變數名){-- catch方法中的變數為try中丟擲的異常物件;

異常的處理邏輯,異常異常物件之後,怎麼處理異常物件

一般在工作中,會把異常的資訊記錄到一個日誌中

}catch(異常類名 變數名){

處理異常物件

}

注意:

1.try中可能會丟擲多個異常物件,那麼就可以使用多個catch來處理這些異常物件

2.如果try中產生了異常,那麼就會執行catch中的異常處理邏輯,執行完畢catch中的處理邏輯,繼續執行try...catch之後的程式碼,如果try中沒有產生異常,那麼就不會執行catch中異常的處理邏輯,執行完try中的程式碼,繼續執行try...catch之後的程式碼

3.try中丟擲什麼異常物件,catch就定義什麼異常變數,用來接收這個異常物件

七、Throwable處理異常的方法:

String getMessage()返回此throwable的簡短描述。

String toString()返回此throvable的詳細訊息字串。

void printStackTrace() JVM列印異常物件,預設此方法,列印的異常資訊是最全面的

八、finally關鍵字

格式:finally程式碼塊

try{

可能產生異常的程式碼

}catch(異常類名 變數名){

異常處理程式碼

}finally{

無論出現什麼異常都能執行

}

注意:

1.finally不能單獨使用,必須和try一起使用

2.finally一般用於資源釋放(資源回收),無論程式是否出現異常,最後都要資源釋放(IO)

九、異常的注意事項:

多異常的捕獲處理

1.多個異常分別處理。

2.多個異常一次捕獲,多次處理。(注意事項:catch裡邊定義的異常變數,如果有子父類關係,那麼子類的異常變數必須寫在上邊,否則就會報錯,因為父類寫在前面則是多型!後面catch的子類則沒有用所有報錯)--子上父下,

3,多個異常一次捕獲一次處理。

注意:

1.執行時異常被丟擲可以不處理。即不捕獲也不宣告丟擲。預設給虛擬機器處理,終止程式,什麼時候不丟擲執行時異常了,再來繼續執行程式

2.finally有return語句,永遠返回finally中的結果,避免該情況

十、子父類異常 :

1.如果父類丟擲了多個異常,子類重寫父類方法時,丟擲的異常只能是以下異常:

(1)父類相同的異常

(2)父類異常的子類

(3)不丟擲異常。

2.父類方法沒有丟擲異常,子類重寫父類該方法時也不可丟擲異常。

3.父類方法沒有丟擲異常,子類產生該異常,只能捕獲處理,不能宣告丟擲

注意:

2.和3.在重寫父類方法時,不能給父類新增異常!父類異常是什麼樣,子類異常就什麼樣;

十一、自定義異常類:

java提供的異常類,不夠我們使用,需要自己定義一些異常類

格式:

public class XXXExcepiton extends Exception | RuntimeException{

新增一個空引數的構造方法:public XXXExcepiton (){ super() }

新增一個帶異常資訊的構造方法:public XXXExcepiton (String s){ super(s) }

}

注意:

1.自定義異常類一般都是以Exception結尾命名,說明該類是一個異常類

2.自定義異常類,必須的繼承Exception或者RuntimeException繼承Exception:那麼自定義的異常類就是一個編譯期異常,如果方法內部丟擲了編譯期異常,就必須處理這個異常,要麼throws,要麼try...catch繼承RuntimeException:那麼自定義的異常類就是一個執行期異常,無需處理,交給虛擬機器處理(中斷處理)