簡體   English   中英

如何知道我的代碼使用的是檢查異常還是未檢查異常?

[英]How to know if my code is using a checked or an unchecked exception?

如果我查看它們,是否有任何關鍵字或特殊代碼語法會知道這里使用了未經檢查的異常還是正在使用檢查的異常?

通過閱讀以前問過這個問題的以前的帖子,在我看來,唯一的知道是檢查還是未檢查的方法是查看異常是擴展Exception還是RuntimeException。

那真的是唯一知道的方法嗎? 因為我認為編寫未檢查和已檢查異常的語法也應該有所不同,但是我不確定要查找的內容。

來自Java文檔。 它說:“異常類和不是RuntimeException子類的任何子類都是已檢查的異常。” 所以你的答案是肯定的。 但是請記住,錯誤也是未經檢查的異常的一種。

如果檢查的異常可以由方法或構造函數的執行引發,並且可以在方法或構造函數的邊界外傳播,則需要在方法或構造函數的throws子句中聲明它們。從Java中可以使用“ isInstance()”函數查看是否一個特定的異常屬於某個類。 在您的情況下,將是RuntimeException是一個異常。 如果是,則未選中。如果否,則選中。

您還可以查找“ java.lang.Object.getClass()”,它可以告訴您對象的確切運行時類。

我可以考慮的另一種方式是分別處理它們。 您可以捕獲RuntimeException和Error,然后捕獲不是RuntimeException實例的所有其他異常。

在實踐中,當您期望程序中存在異常並且希望調用者處理該異常時,將使用一個選中的異常。

例如

當您從FileSystem讀取文件時,該文件可能不存在,因此將拋出IOException ,並且調用者必須通過try..catch對其進行處理。 這樣的異常只是程序的一個異常流程,根本不是一個錯誤。

當您根本不希望發生異常時,將使用未經檢查的異常。

例如

比較兩個字符串a.equals(b) ,您不會期望a為null,因此不會檢查是否會拋出NullPointerException 如果它確實引發了未經檢查的異常,則說明程序中存在錯誤。

暫無
暫無

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

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