選中的(checked)和未檢查的異常(unchecked exception)的區別

Java中的異常處理是處理執行時程式碼序列中出現的特定錯誤的強大機制之一。異常只不過是中斷應用程式正常流程的執行時錯誤。...

Java中的異常處理是處理執行時程式碼序列中出現的特定錯誤的強大機制之一。異常只不過是中斷應用程式正常流程的執行時錯誤。

它通常發生在一段程式碼中,當它發生時,將建立一個表示該異常的物件,並將其丟擲導致該異常的方法中。因此,程式或應用程式中斷,導致應用程式異常終止,不建議這樣做。這就是為什麼要處理這些異常,這就是異常處理機制的用武之地。

Java中存在兩種型別的異常:Checked異常和Unchecked異常。在本文中,我們將詳細討論什麼是checked和unchecked異常以及何時使用它們,最後,我們將看到兩者之間的區別。

選中的(checked)和未檢查的異常(unchecked exception)的區別

什麼是java中的檢查異常(checked exception in java)?

這些是在編譯時檢查和處理的異常。Java在標準包Java.lang中定義了幾個異常類,最常見的異常是標準型別RuntimeException的子類。

在程式直接控制之外的區域發生的異常稱為檢查異常。如果一個方法在編譯時丟擲一個選中的異常,而該異常本身無法處理,那麼它必須在catch{}塊中處理該異常,或者使用throws關鍵字宣告該異常,否則它將給出一個編譯錯誤。編譯器為每個throw語句檢查異常物件的型別,如果它顯示為checked,編譯器將檢查原始碼,以確保在丟擲或宣告異常的方法中處理該異常,以便可以進一步處理該異常。

Exception所描述的所有異常都是它的直接子類,RuntimeException除外,這些異常稱為checked異常。現在什麼時候使用checked exception?當您確切地知道異常發生或失敗的可能性更大時,可以選擇使用選中的異常。Java庫中檢查異常的例子包括IOException、DataAccessException、IllegalAccessException、interruptedeexception、ClassNotFoundException、InvocationTargetException等。

選中的(checked)和未檢查的異常(unchecked exception)的區別

什麼是java中未檢查的異常(unchecked exception in java)?

這些是編譯時不檢查的異常。Unchecked Exception表示一種通常反映程式邏輯中錯誤的情況,這種情況在執行時無法恢復。

簡單來說,unchecked異常是try-catch塊中未捕獲的異常。他們不需要被明確抓到。事實上,當發生未檢查的異常時,Java會自動處理異常。未檢查的異常大多是由於程式設計錯誤而發生的,例如訪問陣列繫結外部的元素或訪問空物件的方法時。在Java中,throwable下的所有異常都是checked異常,而Error和RuntimeException的直接子類是unchecked異常。

未檢查異常最好的部分是它不會降低程式碼可讀性,同時保持客戶機程式碼乾凈。未檢查異常的一些示例包括算術異常、ClassCastException、NullPointerException、ArrayIndexOutOfBound、IllegalArgumentException、IllegalStateException、ArrayStoreException、SecurityException等。

檢查和未檢查異常之間的差異

已檢查和未檢查異常的定義

Checked異常和Unchecked異常是Java中存在的兩種型別的異常,以確保應用程式的正常流。兩者的作用是相同的,即在Java中處理異常,儘管在功能上沒有區別,但是沒有一個規則來決定何時使用checked異常,何時使用unchecked異常。Checked異常是編譯時檢查的異常,而Unchecked異常是編譯時不檢查的異常。

檢查和未檢查異常的基礎知識

checked異常是指在程式的直接控制之外發生的無效情況,而unchecked異常是指程式中的錯誤或程式邏輯中無法在執行時恢復的bug。

異常處理

如果一個方法丟擲一個選中的異常,編譯器將檢查該方法是否使用try catch塊處理該異常,或者使用throws關鍵字指定異常。如果該方法不提供處理程式碼,它將顯示編譯錯誤。相反,程式編譯得很好,因為編譯器在編譯時不檢查未檢查的異常。

異常勾選原因

通常會處理非從RunTimeException派生的異常,而很少處理在執行時發生的as異常。當失敗的可能性太大時,會發生選中的異常。另一方面,未經檢查的異常主要是由於程式設計錯誤引起的。RuntimeException和Error類下的所有異常都是未檢查的異常,而throwable下的所有其他異常都是已檢查的異常。

已檢查和未檢查異常的示例

檢查異常的一些例子有IOException、DataAccessException、IllegalAccessException、interruptedeexception、ClassNotFoundException等等。未檢查異常的示例包括nullpointereexception、ArithmeticException、ArrayIndexOutOfBound、IllegalArgumentException、illegalstateeexception、ArrayStoreException、SecurityException等。

檢查與未檢查異常:比較圖

選中的(checked)和未檢查的異常(unchecked exception)的區別

總結 - 已檢查的(of checked) vs. 未檢查的異常(unchecked exception)

Checked異常和Unchecked異常是Java中存在的兩種型別的異常。雖然這兩個例外的功能是相同的,但它們也有各自的不同之處。checked異常和unchecked異常的主要區別在於前者由編譯器檢查,而後者則逃避編譯器的註意。在編譯時檢查並處理的異常稱為檢查異常,而在編譯時未檢查並處理的異常稱為未檢查異常。本文解釋了什麼是checked和什麼是unchecked異常,何時使用它們,並解釋了兩者之間的區別。

  • 發表於 2021-06-25 08:14
  • 閱讀 ( 48 )
  • 分類:科技

你可能感興趣的文章

扔(throw)和丟擲java(throws in java)的區別

關鍵區別——java中的throw與throws 程式設計時可能會出錯。程式中的錯誤會產生意外的結果,也可能會終止程式的執行。因此,正確地檢測和管理錯誤,才能正確地執行程式。錯誤可以有兩種型別。它們是編譯時錯誤和執行時...

  • 發佈於 2020-09-21 19:02
  • 閲讀 ( 52 )

孟德爾(mendelian)和染色體病(chromosomal disorders)的區別

...有兩個等位基因,這兩個等位基因表明該基因在染色體對中的位置。這些基因座被稱為等位基因,它們位於同源染色體對中。如孟德爾遺傳中所描述的,每一個父母為這個等位基因對貢獻一個等位基因。儘管染色體結構和數目正...

  • 發佈於 2020-09-30 02:24
  • 閲讀 ( 57 )

內部檢查(internal check)和內部控制(internal control)的區別

內部控制與關鍵差異 內部檢查和內部控制是風險管理中兩個常用術語,經常互換使用。然而,兩者之間存在細微的差異,因為與內部控制相比,內部控制是一個更廣泛的概念。內部檢查與內部控制的關鍵區別在於,內部檢查...

  • 發佈於 2020-10-02 19:58
  • 閲讀 ( 50 )

選中的(checked)和java中的未檢查異常(unchecked exception in java)的區別

...包括算術異常和ArrayOutOfBound異常。本文討論Java中checked和unchecked異常之間的區別。Java中checked異常和unchecked異常之間的關鍵區別在於編譯器檢查checked異常,而編譯器不檢查checked異常。 目錄 1. 概述和主要區別 2. Java中的檢查異常...

  • 發佈於 2020-10-19 08:38
  • 閲讀 ( 62 )

最終決賽(final finally)和用java完成(finalize in java)的區別

關鍵區別–java中的final vs finally vs finalize final、finally和finalize是Java程式設計中常用的術語。期末考試是一個關鍵詞。它可以用於變數、方法或類。宣告為final的變數只能初始化一次。他們不能改變。由於Java是一種支援面向物...

  • 發佈於 2020-10-19 15:24
  • 閲讀 ( 53 )

支氣管炎(bronchitis)和支氣管擴張(bronchiectasis)的區別

...生 ⇓ 粘液分泌增加是由於產生的高分泌 ⇓ 粘液在氣道中的積聚和粘液塞的形成 ⇓ 部分或完全阻塞呼吸道 ⇓ 呼吸道反覆感染 ⇓ 疾病的急性加重和逐漸惡化 臨床特徵 慢性生產性咳嗽是疾病初期的唯一表現。 通常,慢性支氣...

  • 發佈於 2020-10-20 11:05
  • 閲讀 ( 46 )

一般的(general)和系統病理學(systemic pathology)的區別

...行調查。因此,普通病理學家對疾病的病理生理學、個別檢查的診斷價值和實驗室行為準則等不同方面有著廣泛的認識和理解。病理學家的生物醫學知識直接影響疾病的診斷。 圖01:一般病理學 此外,普通病理學專業包括外科...

  • 發佈於 2020-10-23 04:11
  • 閲讀 ( 51 )

java異常:您處理的對嗎?

... 異常有兩種型別:checked和unchecked。已檢查的異常必須由呼叫程式碼處理。此規則由java編譯器強制執行。另一方面,未經檢查的異常可以向上傳播到呼叫鏈,而不必顯式宣告它。下面的例子將闡明...

  • 發佈於 2021-03-13 09:11
  • 閲讀 ( 61 )

如何正確處理java異常

...,C#只有未檢查的異常)。必須在丟擲異常的方法中捕獲選中的異常,否則程式碼將無法編譯。 ...

  • 發佈於 2021-03-14 17:31
  • 閲讀 ( 59 )

如何修復windows10系統服務異常停止碼

Windows10中的系統服務異常是藍色畫面死亡(BSOD)。與舊版本的Windows不同,BSOD現在提供了修復計算機的有用資訊。 ...

  • 發佈於 2021-03-18 05:58
  • 閲讀 ( 63 )