天天看點

JAVA之旅(十)——異常的概述,Try-Catch,異常聲明Throws,多異常處理,自定義異常,Throw和Throws的差別JAVA之旅(十)——異常的概述,Try-Catch,異常聲明Throws,多異常處理,自定義異常,Throw和Throws的差別

不知不覺,JAVA之旅這個系列已經更新到第十篇了,感覺如夢如幻,時間過得很快,轉眼一個月就這樣過去了,我們不多說,繼續我們的JAVA之旅
異常算是程式中一個比較重要的環節了,我們首先來看一下異常的體系,我們舉一個小例子,定義一個除法方法
這段程式很好了解吧,就是除嘛,傳6和2進去,的出來的結果肯定是3呀,但是,我現在傳一個4和0,那輸出的結果又會是什麼呢?
JAVA之旅(十)——異常的概述,Try-Catch,異常聲明Throws,多異常處理,自定義異常,Throw和Throws的差別JAVA之旅(十)——異常的概述,Try-Catch,異常聲明Throws,多異常處理,自定義異常,Throw和Throws的差別
OK,異常出現了

異常:就是程式在運作時出現的不正常情況

異常的由來

問題也是現實生活中一個具體的事物,也可以通過JAVA的類的形式進行描述,并封裝成對象,其實就是JAVA對不正常情況進行描述後的對象展現

對于問題的劃分,分為兩種,一種是嚴重問題,一種是非嚴重問題,對于嚴重的問題JAVA通過ERROR類描述,非嚴重的,用Exception類來進行描述

對于ERROR,一般不編寫針對性的代碼進行描述

對于Exception可以通過正對性的處理方式進行處理

無論ERROR還是Exception,都具備一些共性的内容,比如:不正常情況的資訊,引發原因等

Throwable

Error

Exception

JAVA之旅(十)——異常的概述,Try-Catch,異常聲明Throws,多異常處理,自定義異常,Throw和Throws的差別JAVA之旅(十)——異常的概述,Try-Catch,異常聲明Throws,多異常處理,自定義異常,Throw和Throws的差別
Error的錯誤很多,你基本上很多都可以根據名字追到是什麼錯誤
JAVA之旅(十)——異常的概述,Try-Catch,異常聲明Throws,多異常處理,自定義異常,Throw和Throws的差別JAVA之旅(十)——異常的概述,Try-Catch,異常聲明Throws,多異常處理,自定義異常,Throw和Throws的差別
但是我們今天不講Error,我們看的是異常
JAVA之旅(十)——異常的概述,Try-Catch,異常聲明Throws,多異常處理,自定義異常,Throw和Throws的差別JAVA之旅(十)——異常的概述,Try-Catch,異常聲明Throws,多異常處理,自定義異常,Throw和Throws的差別
Try-Catch就是抛出異常,也就是異常的處理
既然知道了處理方式,那我們就可以針對上面的異常進行處理了
對捕獲的異常對象進項常見的處理方法

getMessage() 錯誤資訊

toString() 轉換成string的異常資訊

printStackTrace 列印記憶體中的跟蹤資訊

我們不确定這段代碼有沒有問題,那我們就得去辨別,怎麼辨別?Throws
在功能上通過throws的關鍵字來聲明了該功能有可能會出現問題,是以我們使用的時候就會有提示;
JAVA之旅(十)——異常的概述,Try-Catch,異常聲明Throws,多異常處理,自定義異常,Throw和Throws的差別JAVA之旅(十)——異常的概述,Try-Catch,異常聲明Throws,多異常處理,自定義異常,Throw和Throws的差別
你不處理我就不讓你用,提高了安全性
對多異常的處理方式是怎麼樣的呢?

1.聲明異常時,建議聲明更為具體的異常,這樣處理的可以更加具體

2對方聲明幾個異常,就對應有幾個catch塊,如果多個catch塊中的異常出現繼承關系,父類異常catch放在最下面,不要定義多餘的catch塊

3.建議在進行catch處理時,catch鐘一定要定義具體處理方式,不要簡單的定義一句顯示格式

标準格式
也就是多catch
我們知道,異常分很多種,我們也可以自定義異常,也就是自己定義一些規則,因為項目中會出現一些特有的異常,而這些問題并未被JAV封裝成異常,針對這些問題,我們可以按照JAVA對問題封裝的思想,将特有的問題進行自定義的異常封裝 如何去自定義異常? 需求,在本程式中,對于出書是-1?也視為是錯誤的,是無法進行運算的,那麼就需要對這個問題進行自定義的描述 當在函數内部出現throw抛出異常對象,那麼必須要給對應的處理動作 要麼在函數上聲明讓調用者處理 throw關鍵字自定義異常,一般情況下,函數内出現異常,卻沒有需要聲明,發現列印的就黑鍋隻有異常的名稱,卻沒有資訊,因為自定義的異常并未定義的資訊 如何定義異常資訊
這段代碼挺好玩的
JAVA之旅(十)——異常的概述,Try-Catch,異常聲明Throws,多異常處理,自定義異常,Throw和Throws的差別JAVA之旅(十)——異常的概述,Try-Catch,異常聲明Throws,多異常處理,自定義異常,Throw和Throws的差別
但是其實我們有一點是不知道的,這個其實父類已經完成了,是以子類隻要構造時,将構造資訊傳遞給父類就行了,用super,那麼就可以直接通過getMessage()方法來擷取自定義的異常資訊了
我們來一個小插曲,就是異常的兩個類的差別 Throw和Throws的差別

1.Throws使用在函數上,Throw使用在函數内

2.Throws後面跟異常類,可以跟多個,用逗号差別,Throw後面跟的是異常對象

OK,我們本篇幅就先到這裡,異常的内容還是有很多的,不出意外我們下篇還是講異常,大家感興趣的話,可以加群:555974449