日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

什么是异常?

發(fā)布時間:2023/12/20 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 什么是异常? 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

java中異常也是一種類.?

異常: 不正常的情況

異常 :指的是程序在執(zhí)行過程中,出現(xiàn)的非正常的情況,最終會導致JVM的非正常停止。

?

常見的異常:

ArrayIndexOutOfBoundsException 數(shù)組索引越界異常

StringIndexOutOfBoundsException ?字符串索引越界異常

ArithmeticException ?除數(shù)不能為0的異常

NullPointerException ?空指針異常?

- Error:嚴重錯誤Error,無法通過處理的錯誤,只能事先避免,好比絕癥。

服務(wù)器宕機,數(shù)據(jù)庫奔潰

?

- Exception:表示異常,異常產(chǎn)生后程序員可以通過代碼的方式糾正,使程序繼續(xù)運行,是必須要處理的。好比感冒、闌尾炎。

?

異常的分類:

- 編譯時期異常:checked異常。在編譯時期,就會檢查,如果沒有處理異常,則編譯失敗。(如日期格式化異常)

編譯期間出現(xiàn)的異常,如果編譯期間不處理,那么程序無法執(zhí)行

除了RuntimeException及其子類,其他的異常都是編譯異常

?

- 運行時期異常:runtime異常。在運行時期,檢查異常.在編譯時期,運行異常不會編譯器檢測(不報錯)(如數(shù)學異常)

只在運行期間出現(xiàn)的異常,如果編譯期間不處理,程序是可以執(zhí)行的,但是在執(zhí)行的時候會報出異常

只有RuntimeException及其子類都是運行異常

?

異常的產(chǎn)生過程解析

?

如何把產(chǎn)生的異常對象拋給調(diào)用者?

throw 用在方法內(nèi),用來拋出一個異常對象,將這個異常對象傳遞到調(diào)用者處,并結(jié)束當前方法的執(zhí)行。

?

格式:

throw new 異常類名(參數(shù));// throw 異常對象;

?

例子:

Objects非空判斷

public static <T> T requireNonNull(T obj):查看指定引用對象是不是null

?

如何處理異常?

處理異常的方式有2:

聲明方式處理異常: 使用throws關(guān)鍵字聲明處理異常:將問題標識出來,報告給調(diào)用者

throws關(guān)鍵字運用于方法聲明之上,用于表示當前方法不處理異常,而是提醒該方法的調(diào)用者來處理異常(拋出異常).

格式:

修飾符 返回值類型 方法名(參數(shù)) throws 異常類名1,異常類名2{

?

}

?

throws用于進行異常類的聲明,若該方法可能有多種異常情況產(chǎn)生,那么在throws后面可以寫多個異常類,用逗號隔開

或者直接在throws后面寫最大的異常(父類異常)

?

try-catch捕獲方式處理異常:

捕獲異常:Java中對異常有針對性的語句進行捕獲,可以對出現(xiàn)的異常進行指定方式的處理。

?

格式:

try{

編寫可能會出現(xiàn)異常的代碼

}catch(異常類型 ?變量名){

處理異常的代碼

//記錄日志/打印異常信息/繼續(xù)拋出異常

}

?

1.如果try后面的大括號中的代碼出現(xiàn)了異常,那么catch就會捕獲到該異常對象,然后把該異常對象賦值給小括號中的異常類型的變量

,然后執(zhí)行catch后面的大括號中的代碼

2.如果try后面的大括號中的代碼沒有出現(xiàn)異常,那么catch就不會捕獲到異常對象,catch后面的大括號中的代碼就不會執(zhí)行

3.Throwable類中定義了一些查看方法:

- public String getMessage():獲取異常的描述信息,原因(提示給用戶的時候,就提示錯誤原因。

- public String toString():獲取異常的類型和異常描述信息(不用)

- public void printStackTrace():打印異常的跟蹤棧信息并輸出到控制臺。

?

4.多個異常使用捕獲又該如何處理呢?

1. 多個異常分別處理。

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

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

?

5.注意事項:

- 運行時異常被拋出可以不處理。即不捕獲也不聲明拋出。

- 如果父類拋出了多個異常,子類覆蓋父類方法時,只能拋出相同的異常或者是他的子集。

- 父類方法沒有拋出異常,子類覆蓋父類該方法時也不可拋出異常。此時子類產(chǎn)生該異常,只能捕獲處理,不能聲明拋出

- 當多異常處理時,捕獲處理,前邊的類不能是后邊類的父類

- 一旦try中的代碼發(fā)生了異常,那么try中發(fā)生異常的代碼后面的代碼就不會執(zhí)行了

?

6.finally 代碼塊

作用: finally代碼塊中的代碼無論異常是否發(fā)生,都需要執(zhí)行

注意:finally不能單獨使用。

?

格式:

try{

//可能會發(fā)生異常的代碼

?

}catch(異常的類型 變量名){

發(fā)生了異常之后會執(zhí)行的代碼

?

}finally{

正常情況下,無論是否發(fā)生異常,都會執(zhí)行的代碼

一般情況用來書寫釋放資源的代碼

}

?

注意事項:

- try/catch后可以追加finally代碼塊,其中的代碼一定會被執(zhí)行,通常用于資源回收。

- 如果finallyreturn語句,永遠返回finally中的結(jié)果,避免該情況.

?

什么是自定義異常類:

在開發(fā)中根據(jù)自己業(yè)務(wù)的異常情況來定義異常類.

?

異常類如何定義:

1. 自定義一個編譯期異常: 自定義類 并繼承于java.lang.Exception

2. 自定義一個運行時期的異常類:自定義類 并繼承于java.lang.RuntimeException

轉(zhuǎn)載于:https://www.cnblogs.com/woyaozilv/p/10599495.html

總結(jié)

以上是生活随笔為你收集整理的什么是异常?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。