已檢查異常(checked exception)和執行時異常(runtime exception)的區別

異常是一種特殊型別的事件,它可以干擾正常的程式流。exception這個名字來自“exception event”。引發異常是建立異常物件並將其交給執行時系統的過程。當執行時系統接收到異常物件時,它將嘗試在呼叫堆疊中找到某人來處理它,方法是按相反的順序遍歷它(方法被呼叫的順序)。如果執行時系統找到具有異常處理程式的方法,則該執行時系統將成功。異常處理程式是可以正式處理所述異常的程式碼塊。如果執行時系...

檢查異常vs運行時異常

異常是一種特殊類型的事件,它可以干擾正常的程序流。exception這個名字來自“exception event”。引發異常是創建異常對象並將其交給運行時系統的過程。當運行時系統接收到異常對象時,它將嘗試在調用堆棧中找到某人來處理它,方法是按相反的順序遍歷它(方法被調用的順序)。如果運行時系統找到具有異常處理程序的方法,則該運行時系統將成功。異常處理程序是可以正式處理所述異常的代碼塊。如果運行時系統找到適當的處理程序,它將把異常對象傳遞給處理程序。這叫做捕捉異常。但是,如果無法處理異常,程序將終止。在Java中,異常繼承自Throwable類。檢查異常是編譯器強制處理的異常。運行時異常是一種異常類型,編譯器不檢查這些異常。

什麼是檢查異常?

選中的異常是類的對象之一java.lang.exception或其子類(除了java.lang.RuntimeException以及它的子類)。檢查的異常在編譯時被“檢查”。這意味著程序員必須捕捉或拋出這些異常,否則編譯會抱怨(導致編譯器錯誤)。由於這個原因,許多檢查過的異常對於程序員來說是非常熟悉的。例如,IOException及其子類都是checked異常,每當程序員處理訪問或修改文件時,編譯器都會進行檢查,以確保所有可能的IOException都由程序員處理。

什麼是運行時異常?

運行時異常包括java.lang.RuntimeException以及它的所有子類。從理論上講,它們與checked異常具有相同的用途,可以像checked異常一樣拋出或處理,但編譯器不強制執行對它們的處理。因此,運行時異常屬於未檢查異常的家族。NullPointerException、NumberFormatException、ClassCastException和ArrayIndexOutOfBoundsException是Java中常見的運行時異常。

檢查異常和運行時異常之間的區別是什麼?

雖然,檢查異常和運行時異常在程序執行期間都是不希望發生的,但它們有它們的區別。已檢查的異常處理由編譯器強制執行,但運行時異常則不是。因此,為了編譯代碼,必須拋出或處理已檢查的異常,但是對於運行時異常沒有這樣的要求。因此,運行時異常與錯誤一起屬於未檢查異常類別。

  • 發表於 2020-10-27 16:12
  • 閱讀 ( 17 )
  • 分類:科技

你可能感興趣的文章

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

...常見的執行時錯誤是被零除並計算超出陣列邊界的元素。異常是由程式中的執行時錯誤引起的條件。當發生異常時,程式執行終止。如果程式設計師想繼續執行剩餘的程式碼,那麼程式設計師可以捕獲由錯誤條件引發的異常物件...

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

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

...檔案或資料庫。因此,編譯器會檢查這些異常。IO異常是已檢查的異常。它是由於裝置中的錯誤而發生的。當應用程式訪問不存在的檔案時,它將導致FileNotFound異常。應用程式可以連線到MySQL、Oracle等資料庫來儲存資料。如果發...

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

編譯時間(compile time)和執行時(runtime)的區別

...發生的錯誤稱為編譯時錯誤,而在執行時發生的錯誤稱為異常。 目錄 1. 概述和主要區別 2. 什麼是編譯時間 3. 什麼是執行時 4.編譯時和執行時的相似性 5. 並行比較-以表格形式顯示編譯時與執行時 6. 摘要 什麼是編譯時間(compile t...

  • 發佈於 2020-10-19 10:25
  • 閲讀 ( 63 )

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

...防止更改變數、避免方法重寫和避免擴充套件類。最後是異常處理中的一個塊,無論是否引發異常,它都將執行。finalize是一個方法,由垃圾回收器在完全銷燬物件之前呼叫。這就是Java中final和finalize的關鍵區別。 目錄 1. 概述和...

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

管理層收購(mbo)和mbe公司(mbe)的區別

...當發生重大偏差時,高階管理層將受到警告,這被稱為“異常已發生”,並緊急解決“異常”。 會計部門在MBE中起著舉足輕重的作用。他們需要設計一個切實可行的預測預算,而不是低估或誇大他們的能力。在結果披露方面,...

  • 發佈於 2020-10-28 19:29
  • 閲讀 ( 40 )

急性腎損傷(acute kidney injury (aki))和慢性腎病(chronic kidney disease (ckd))的區別

...常或腎損害標誌物,包括血液或尿液成分異常,或影像學檢查異常。 GFR<60ml/min/1.73m2,持續時間≥3個月,有或無腎損害。 體徵和症狀 代謝性酸中毒、水腫-外周和肺水腫、高血壓、疲勞、心包炎、腦病、周圍神經病變、不寧腿...

  • 發佈於 2020-11-03 00:53
  • 閲讀 ( 58 )

接受(accept)和除了(except)的區別

...很容易理解accept和除非發音正確的區別。可以說,accept和except是兩個在用法和意義上經常混淆的詞。這是因為這兩個詞的發音常常錯誤地相似。接受這個詞的意思是“同意”或“不說不就接受”。另一方面,except這個詞的意思是...

  • 發佈於 2020-11-04 22:05
  • 閲讀 ( 52 )

如何用java連線mysql資料庫

... 使用這個jdbcUrl,這裡有一個完整的程式來檢查連線。 ...

  • 發佈於 2021-03-11 17:39
  • 閲讀 ( 56 )

關於javarmi註冊中心以及如何使用它的所有內容

... 使用netstat命令檢查指定埠上是否確實存在偵聽器: ...

  • 發佈於 2021-03-12 15:58
  • 閲讀 ( 66 )

java異常:您處理的對嗎?

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

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