我想了解在Java中檢查異常,並有以下查詢。Java檢查異常
是下列正確的:如果一個方法拋出的任何類型的檢查異常,潛在的那個例外必須是
- 使用
throws
關鍵字聲明,或 - 由各自抓方法。
如果上述內容是正確的,這是否意味着我需要了解每一個內置到Java的檢查異常,以便我知道我的方法是否有可能拋出異常?還是應該嘗試編譯我的代碼,然後根據編譯時錯誤修改我的代碼?
我想了解在Java中檢查異常,並有以下查詢。Java檢查異常
是下列正確的:如果一個方法拋出的任何類型的檢查異常,潛在的那個例外必須是
throws
關鍵字聲明,或如果上述內容是正確的,這是否意味着我需要了解每一個內置到Java的檢查異常,以便我知道我的方法是否有可能拋出異常?還是應該嘗試編譯我的代碼,然後根據編譯時錯誤修改我的代碼?
如果上述內容是正確的,這是否意味着我需要了解內置於Java [...]的每個檢查過的異常?
是的,您的陳述是正確的,但沒有人希望您在編程時瞭解所有可能的檢查異常。如果你有一個編譯器或者更好的IDE,那麼你就不必如此。
要麼你去來回編譯器輸出和代碼之間,你在你的問題建議,或者如果你違反了規則,你安裝一個IDE,比如Eclipse,讓你直接通知:
,這是否意味着我需要了解是建立在對Java
我假設你使用的是一些IDE(Eclipse的如)每一個檢查異常 - 如果沒有,你應該得到Ø儘快。然後,IDE幾乎不斷地編譯代碼,所以當出現問題時,你會在它附近得到一個紅色的下劃線,並提示一個工具提示泡泡,告訴你什麼是錯誤的 - 例如「丟失拋出」。
因此,你的第二個假設是基本正確的,它只是發生在幕後:
或者我應該只是嘗試基於編譯時錯誤編譯我的代碼,然後修改我的代碼?
所以不,你不需要瞭解所有的例外。
此外,所有選中的例外延伸到Exception
,所以如果您有權訪問源代碼,則可以檢查它們的基礎。未檢查的例外延伸至RuntimeException
。
經驗法則:如果是I/O,它通常會被檢查。這是您遇到的最常見的異常類型。
whenever you use a method (whether your own or In-built) if you closely follow its method signature, if the method throws some exception you need to throw/handle it explicitly in your code
這樣你就不需要記住所有的異常,你就會知道處理哪些例外情況。
爲了讓生活方便使用的一些IDE像Eclipse
希望這有助於!
祝你好運!
如果上面是正確的
這是...
[...]這是否意味着我需要了解的是內置在每一個檢查異常Java,以便我知道我的方法是否有可能產生該異常?還是應該嘗試編譯我的代碼,然後根據編譯時錯誤修改我的代碼?
使用IDE!你不需要親密地知道所有這些。
你做什麼想檢查,但是是層次結構(即,檢查javadoc!這應該是一個巴甫洛夫反射);因爲異常是類,所以它們相互繼承,例如,FileSystemException
是java.nio.file的portmanteau例外,用於指示與文件系統相關的問題,並繼承IOException
。如果你想特別對待它,趕在IOException
之前。
作爲一般規則,首先捕獲更具體的例外。
另外,別抓Exception
。決不。問題是,RuntimeException
,這是未檢查的基本例外例外,繼承Exception
,這意味着如果您捕獲Exception
您捕獲所有未經檢查的異常。你想重新拋出未檢查:
try {
something();
} catch (RuntimeException unchecked) {
throw unchecked;
} catch (Exception e) {
// deal with e
}
是你需要知道每exception..however如果你知道超類異常的比你的U並不需要知道它的子類...用於如.FileReader拋出一個名爲FileNotFoundException的異常由於FileNotFoundException是IOException的一個子類,因此我們可以在拋出列表中指定IOException並使上述程序無編譯器錯誤。