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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

什么是异常?

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

java中異常也是一種類.?

異常: 不正常的情況

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

?

常見的異常:

ArrayIndexOutOfBoundsException 數組索引越界異常

StringIndexOutOfBoundsException ?字符串索引越界異常

ArithmeticException ?除數不能為0的異常

NullPointerException ?空指針異常?

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

服務器宕機,數據庫奔潰

?

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

?

異常的分類:

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

編譯期間出現的異常,如果編譯期間不處理,那么程序無法執行

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

?

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

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

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

?

異常的產生過程解析

?

如何把產生的異常對象拋給調用者?

throw 用在方法內,用來拋出一個異常對象,將這個異常對象傳遞到調用者處,并結束當前方法的執行。

?

格式:

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

?

例子:

Objects非空判斷

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

?

如何處理異常?

處理異常的方式有2:

聲明方式處理異常: 使用throws關鍵字聲明處理異常:將問題標識出來,報告給調用者

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

格式:

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

?

}

?

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

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

?

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

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

?

格式:

try{

編寫可能會出現異常的代碼

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

處理異常的代碼

//記錄日志/打印異常信息/繼續拋出異常

}

?

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

,然后執行catch后面的大括號中的代碼

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

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

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

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

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

?

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

1. 多個異常分別處理。

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

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

?

5.注意事項:

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

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

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

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

- 一旦try中的代碼發生了異常,那么try中發生異常的代碼后面的代碼就不會執行了

?

6.finally 代碼塊

作用: finally代碼塊中的代碼無論異常是否發生,都需要執行

注意:finally不能單獨使用。

?

格式:

try{

//可能會發生異常的代碼

?

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

發生了異常之后會執行的代碼

?

}finally{

正常情況下,無論是否發生異常,都會執行的代碼

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

}

?

注意事項:

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

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

?

什么是自定義異常類:

在開發中根據自己業務的異常情況來定義異常類.

?

異常類如何定義:

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

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

轉載于:https://www.cnblogs.com/woyaozilv/p/10599495.html

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。