簡體   English   中英

為什么Integer.parseInt在沒有try catch的情況下進行編譯?

[英]Why Integer.parseInt is compiling without try catch?

據我所知,在java中,拋出異常的函數不應該在沒有try和catch或者在它上面的函數中減速的情況下編譯。 那么這段代碼怎么合法,不要粉碎?

public static void main(String[] args) {
    Integer.parseInt("33");
}

即使Integer.parseInt()拋出:NumberFormatException - 如果字符串不包含可解析的整數。

NumberFormatException擴展RuntimeException ,這是一個不需要捕獲的未經檢查的異常。

在此輸入圖像描述

摘自Java教程

由於Java編程語言不需要捕獲或指定未經檢查的異常(RuntimeException,Error及其子類)的方法,因此程序員可能會編寫僅拋出未經檢查的異常或使其所有異常子類繼承自RuntimeException的代碼。 這兩個快捷方式都允許程序員編寫代碼而不必擔心編譯器錯誤,也不必費心去指定或捕獲任何異常。 全文

NumberFormatException Api文檔

Java語言規范

未經檢查的異常類是運行時異常類和錯誤類。

換句話說,每個Throwable,即RuntimeException或子類以及每個Throwable,都是Error或子類。 它們可以被捕獲,但捕獲或throws不是強制性的。

檢查的異常類是除未經檢查的異常類之外的所有異常類。 也就是說,已檢查的異常類都是Throwable的子類,而不是RuntimeException及其子類和Error及其子類。

換句話說,每一個Throwable 他們必須被投擲( throws )或被抓住。

NumberFormatException擴展RuntimeException ,因此它是未經檢查的異常類之一,並且不必被方法捕獲或拋出。

NumberFormatException是一個所謂的未經檢查的異常,因為它是RuntimeException的子類型。

在java中,未經檢查的異常也可以在沒有try-catch的情況下編譯

NumberFormatException是一個RuntimeException它是未選中的,因此不需要捕獲。

如果您不知道檢查/未檢查的Exception2,請檢查[文檔]

據我所知,在java中,拋出異常的函數不應該在沒有try和catch的情況下編譯

是的,只需將exception更改為Checked exception

通過以下內容了解這些:

有效的Java異常

例外

NumberFormatException是一個RuntimeException。 RuntimeExceptions是未經檢查的異常。 您所說的對於已檢查的異常是強制性的,但對於未經檢查的異常不是必需的。

幾個鏈接:
http://www.javapractices.com/topic/TopicAction.do?Id=129
http://docs.oracle.com/javase/tutorial/essential/exceptions/runtime.html

Java中的異常有兩種:已檢查異常和未經檢查的異常。

已檢查的異常是需要try-catch塊或聲明的異常。

未經檢查的異常不需要。 NumberFormatException是未經檢查的異常。

Basicaly,未經檢查的異常派生自RuntimeException ,因此不需要聲明或try-catch塊。

它是一個未經檢查的異常。類RuntimeException及其子類是未經檢查的異常類。這些異常可能出現在代碼中的任何位置。因此,您可以捕獲該異常並繼續執行

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM