簡體   English   中英

未檢查與已檢查的異常處理

[英]exception handling unchecked vs. checked

為什么NoSuchElementFoundExceptionRuntimeException又稱為未經檢查的錯誤? 我有未經檢查的錯誤是程序員的錯,所以如果用戶輸入要讀取的文件並且該文件存在但為空,該怎么辦? 那不是程序員的錯,那有什么道理?

我認為這里的“故障”一詞有點誤導。

受檢查的異常通常是程序應適當捕獲和處理的異常,而未檢查的異常通常是程序應防止的異常。 如果某個方法包含該行,則throw new NoSuchElementException() ,這意味着不應該到達此行,如果到達該行,則可能意味着某些調用方法中存在錯誤。

java.util.Scanner ,我想這就是您的想法,當您調用nextLong()且文件為空時,它引發NoSuchElementException的原因是您應該調用hasNextLong()進行檢查事先是否安全。 首先不會調用hasNextLong()的唯一原因是,如果您確實希望存在long(例如,如果您正在讀取程序附帶的配置文件)。

為什么NoSuchElementFoundException是RuntimeException又稱為未經檢查的錯誤?

因為那是它的設計方式!

我有未經檢查的錯誤是程序員的錯...

一般來說,這是正確的。 但是更准確的描述是,檢查異常是您希望能夠從最終用戶中恢復和/或報告給最終用戶的異常。

...那么如果用戶輸入要讀取的文件並且該文件存在但為空,該怎么辦? 那不是程序員的錯,那有什么道理?

在這種情況下,這是“程序員的錯”,因為他可能(也許應該)在調用next*方法之前使用has*方法測試了條件。

但這有點不重要...

暫無
暫無

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

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