java 自定义异常的回顾
一、異常的分類:
1.編譯時異常:編譯時被檢測的異常 (throw后,方法有能力處理就try-catch處理,沒能力處理就必須throws)。編譯不通過,檢查語法(其實就是throw和throws的配套使用)。
2.運行時異常:編譯時不被檢查的異常(運行時異常。RuntimeException及其子類)。編譯通過。
各自的特點:
>1.編譯時異常 : 一旦 用throw 拋出異常,如果當前方法 可處理異常,那么直接在該方法內用try-catch 去處理。如果當前方法不具備處理該異常的能力,那么就必須在 參數列表后方法體前用 throws 聲明 異常 所屬類,交給調用該方法的 調用者(方法) 去處理 。
>2.運行時異常,不需要用throws 聲明拋出 異常對象所屬類,也可以不用throw 拋出異常對象或異常引用。對于調用該方法,也不需要放于 try-catch 代碼塊中。(為什么 ? 如果你捕獲它,就會冒這么一個風險:程序代碼錯誤被掩蓋在運行中無法察覺);
加深理解:
從邏輯的角度來看, checked 異常 和 RuntimeException 有著不同的使用目的,檢查性異常 用來指示 一種調用方能夠直接處理的異常情況(例如: 用戶輸入錯誤,程序可以直接捕獲并處理,提示用戶輸入錯誤), 而RuntimeException 是用來指 調用方 本身無法 處理或回復 的程序錯誤(例如,你封裝個庫給別人用,當別人調用你庫中某個方法是,需要傳入某些參數,如果用戶傳入的參數不合法,你自己沒辦法處理,那么此刻你拋出的就應該是運行時異常;(構造方法也是可以拋出異常的,而且,拋出異常的類型通常是運行時異常))。
二、自定義異常
前面所講的異常,都是系統自帶的,系統自己處理,但是很多時候項目會出現特有問題,而這些問題并未被java所描述并封裝成對象,所以對于這些特有的問題可以按照java的對問題封裝的思想,將特有的問題進行自定義異常封裝。在Java中要想創建自定義異常,需要繼承Throwable或者他的子類Exception。
三、異常的拋出
1、定義 : 一個方法不處理這個異常,而是調用層次向上傳遞,誰調用這個方法,這個異常就由誰來處理。
2、throw : 將產生的異常拋出(強調的是動作),拋出的既可以是異常的引用,也可以是異常對象。(位置: 方法體內)
3、throws : 如果一個方法可能會出現異常,但沒有能力處理這種異常,可以在方法聲明處用throws子句來聲明拋出異常。用它修飾的方法向調用者表明該方法可能會拋出異常(可以是一種類型,也可以是多種類型,用逗號隔開)(位置: 寫在方法名 或方法名列表之后 ,在方法體之前。)
注意 : 調用可能會拋出異常的方法,必須添加try-catch代碼塊嘗試去捕獲異常 或者 添加throws 聲明 來將異常 拋出給更上一層的調用者進行處理,這里需要注意一個細節:新的異常包含原始異常的所有信息,根據這個我們可以去追溯最初異常發生的位置;
四、throw 和throws 關鍵字的區別
1、寫法上 : throw 在方法體內使用,throws 函數名后或者參數列表后方法體前 ;
2、意義 : throw 強調動作,而throws 表示一種傾向、可能但不一定實際發生 ;
3、throws 后面跟的是異常類,可以一個,可以多個,多個用逗號隔開。throw 后跟的是異常對象,或者異常對象的引用。
4、throws 用戶拋出異常,當在當前方法中拋出異常后,當前方法執行結束(throws 后,如果有finally語句的話,會執行到finally語句后再結束。)。可以理解成return一樣。
五、未完待續。。。。
參考地址1:http://blog.csdn.net/qq_18505715/article/details/73196421
參考地址2:http://blog.csdn.net/mccand1234/article/details/51579425
參考地址3:http://www.cnblogs.com/dolphin0520/p/3769804.html
總結
以上是生活随笔為你收集整理的java 自定义异常的回顾的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 补肾药酒配方(补肾壮阳药酒的最佳配方)
- 下一篇: 一用户电脑开机有错误代码电脑开机出现错误