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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

JAVA知识基础(十一):异常

發布時間:2025/3/8 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JAVA知识基础(十一):异常 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.異常的概念

簡單說就是不正常運行,最終導致JVM的非正常停止。

在Java等面向對象的編程語言中,異常本身是一個類,產生異常就是創建異常對象并拋出了一個異常對象。Java處理異常的方式是中斷處理。

異常指的并不是語法錯誤,語法錯了,編譯不通過,不會產生字節碼文件,根本不能運行。

2.異常體系

異常機制其實是幫助我們找到程序中的問題,異常的根類是java.lang.Throwable,其下有兩個子類:java.lang.Error與java.lang.Exception,平常所說的異常指java.lang.Exception。

Throwable中的常用方法:
1、 public void printStackTrace():打印異常的詳細信息。
包含了異常的類型,異常的原因,還包括異常出現的位置,在開發和調試階段,都得使用printStackTrace。
2、 public String getMessage():獲取發生異常的原因。
提示給用戶的時候,就提示錯誤原因。
3、public String toString():獲取異常的類型和異常描述信息(不用)。

出現異常,最簡單的方式就是把異常的簡單類名,拷貝到API中去查。

3 .異常分類

我們平常說的異常就是指Exception,因為這類異常一旦出現,我們就要對代碼進行更正,修復程序。

異常(Exception)的分類:根據在編譯時期還是運行時期去檢查異常?

編譯時期異常:checked異常。在編譯時期,就會檢查,如果沒有處理異常,則編譯失敗。(如日期格式化異常)
運行時期異常:runtime異常。在運行時期,檢查異常.在編譯時期,運行異常不會編譯器檢測(不報錯)。(如數學異常)

編譯時異常和程序的上下文條件有著密切關系,即使程序設計無誤也會由于使用問題而引發。Java編譯器要求方法必須聲明拋出可能發生的編譯時異常,但是并不要求必須聲明拋出未被捕獲的運行時異常

4.異常的處理

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

4.1拋出異常throw
在編寫程序時,作為一個優秀的程序員必須要考慮程序出現問題的情況。舉個栗子,在定義方法時,方法需要接受參數。那么,當調用方法使用接受到的參數時,首先需要先對參數數據進行合法的判斷,數據若不合法,就應該告訴調用者,傳遞合法的數據進來。這時需要使用拋出異常的方式來告訴調用者。這個時候throw就派上用場了!

在java中,提供了一個throw關鍵字,Throw用來拋出一個指定的異常對象。從而可以
1、創建一個異常對象。封裝一些提示信息(信息可以自己編寫)。
2、通過關鍵字throw就可以將這個異常對象告知給調用者,還可以將這個異常對象傳遞到調用者處。

throw小結
throw用在方法內,后面接一個異常對象,使用格式為throw new 異常類名(參數);,將這個異常對象傳遞到調用者處,并結束當前方法的執行。

throw使用的格式如下:

throw new NullPointerException("要訪問的arr數組不存在") throw new ArrayIndexOutOfBoundsException("該索引在數組中不存在,已超出范圍");

4.2聲明異常throws
如果產生了問題,我們就會throw將問題描述類即異常進行拋出,也就是將問題返回給該方法的調用者。

那么對于調用者來說,該怎么處理呢?一種是進行捕獲處理,另一種就是繼續講問題聲明出去,使用throws聲明處理。

聲明異常:將問題標識出來,報告給調用者。如果方法內通過throw拋出了編譯時異常,而沒有捕獲處理(稍后講解該方式),那么必須通過throws進行聲明,讓調用者去處理。

throws小結
關鍵字throws運用于方法聲明之上,throws格式為修飾符 返回值類型 方法名(參數) throws 異常類名1,異常類名2…{ },用于表示當前方法不處理異常,而是提醒該方法的調用者來處理異常(拋出異常).

4.3捕獲異常try…catch
如果異常出現的話,會立刻終止程序,所以我們得處理異常:

該方法不處理,而是聲明拋出,由該方法的調用者來處理(throws)。
在方法中使用try-catch的語句塊來處理異常。
try-catch的方式就是捕獲異常。

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

捕獲異常語法如下:

try{編寫可能會出現異常的代碼 }catch(異常類型 e){處理異常的代碼//記錄日志/打印異常信息/繼續拋出異常 }

try:該代碼塊中編寫可能產生異常的代碼。
catch:用來進行某種異常的捕獲,實現對捕獲到的異常進行處理。

注意:try和catch都不能單獨使用,必須連用。

4.4 finally 代碼塊
finally:有一些特定的代碼無論異常是否發生,都需要執行。另外,因為異常會引發程序跳轉,導致有些語句執行不到。而finally就是解決這個問題的,在finally代碼塊中存放的代碼都是一定會被執行的。

什么時候的代碼必須最終執行?
當我們在try語句塊中打開了一些物理資源(磁盤文件/網絡連接/數據庫連接等),我們都得在使用完之后,最終關閉打開的資源。

finally的語法:
try…catch…finally:自身需要處理異常,最終還得關閉資源。

注意:finally不能單獨使用。

比如在IO流中,當打開了一個關聯文件的資源,最后程序不管結果如何,都需要把這個資源關閉掉。

當只有在try或者catch中調用退出JVM的相關方法,此時finally才不會執行,否則finally永遠會執行。

5.常見異常類型

異常解釋
NullPointerException空指針(即引用無具體指向)異常
ClassCastException(強制)類型轉換錯誤
ArrayIndexOutOfBoundsException數組越界錯誤
UnsupportedClassVersionError運行JAVA版本不一致
NumberFormatException數字轉換異常
RuntimeException Java.lang包中多數異常的基類
ClassNotFoundException不能加載請求的類
IOExceptionI/O 異常的根類
FileNotFoundException不能找到文件

6.自定義異常

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

自定義一個業務邏輯異常: RegisterException。一個注冊異常類。

異常類如何定義:

  • 自定義一個編譯期異常: 自定義類 并繼承于java.lang.Exception。
  • 自定義一個運行時期的異常類:自定義類 并繼承于java.lang.RuntimeException。

總結

以上是生活随笔為你收集整理的JAVA知识基础(十一):异常的全部內容,希望文章能夠幫你解決所遇到的問題。

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