[英]exception handling unchecked vs. checked
為什么NoSuchElementFoundException
是RuntimeException
又稱為未經檢查的錯誤? 我有未經檢查的錯誤是程序員的錯,所以如果用戶輸入要讀取的文件並且該文件存在但為空,該怎么辦? 那不是程序員的錯,那有什么道理?
我認為這里的“故障”一詞有點誤導。
受檢查的異常通常是程序應適當捕獲和處理的異常,而未檢查的異常通常是程序應防止的異常。 如果某個方法包含該行,則throw new NoSuchElementException()
,這意味着不應該到達此行,如果到達該行,則可能意味着某些調用方法中存在錯誤。
就java.util.Scanner
,我想這就是您的想法,當您調用nextLong()
且文件為空時,它引發NoSuchElementException
的原因是您應該調用hasNextLong()
進行檢查事先是否安全。 首先不會調用hasNextLong()
的唯一原因是,如果您確實希望存在long(例如,如果您正在讀取程序附帶的配置文件)。
為什么NoSuchElementFoundException是RuntimeException又稱為未經檢查的錯誤?
因為那是它的設計方式!
我有未經檢查的錯誤是程序員的錯...
一般來說,這是正確的。 但是更准確的描述是,檢查異常是您希望能夠從最終用戶中恢復和/或報告給最終用戶的異常。
...那么如果用戶輸入要讀取的文件並且該文件存在但為空,該怎么辦? 那不是程序員的錯,那有什么道理?
在這種情況下,這是“程序員的錯”,因為他可能(也許應該)在調用next*
方法之前使用has*
方法測試了條件。
但這有點不重要...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.