理解Java里面的必检异常和非必检异常
生活随笔
收集整理的這篇文章主要介紹了
理解Java里面的必检异常和非必检异常
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
問題:理解Java里面的必檢異常和非必檢異常
Joshua Bloch在"Effective Java"里面說過
在可恢復的條件下和編程錯誤導致的運行時錯誤時,使用必檢異常(第二版的第52頁)
讓我們來看一下我對這個的正確理解吧
下面是我對必檢異常的理解
try{String userInput = //read in user inputLong id = Long.parseLong(userInput); }catch(NumberFormatException e){id = 0; //通過設置ID為0,來恢復這種情況 }1.上面的代碼是否能被看作必檢異常
2.運行時異常是一個非必檢異常嗎?
下面是我對非必檢異常的一些理解
try{File file = new File("my/file/path");FileInputStream fis = new FileInputStream(file); }catch(FileNotFoundException e){//3. 這里我應該干什么//我應該 "throw new FileNotFoundException("File not found");"?//應該寫日志嗎?//或者應該 System.exit(0);? }為什么要把這個異常拋出?直接處理不是更快更好嗎?
6.我應該直接拋出確切的異常還是使用Exception去覆蓋掉他
回答一
是不是必檢異常和你是否捕捉和你在捕獲異常的代碼塊里面干了什么無關。它是異常類的一種屬性。任何異常都是Exception類的一個子類(除了運行時異常)并且它的子類都是必檢異常
Java的編譯器強制要求你捕獲異常或者在方法簽名那個聲明。它們可以用來提高程序的安全性,但是大部分人認為它不會帶來程序設計上的問題
為什么要把這個異常拋出?直接處理不是更快更好嗎?
因為這是異常的完整內容。如果沒有這種可能性,你就不需要這些異常了。它們能夠讓你在你選擇的層級去處理異常,而不是強制讓你在異常發生的底層級的方法里處理這些異常
文章翻譯自Stack Overflow:https://stackoverflow.com/questions/6115896/understanding-checked-vs-unchecked-exceptions-in-java
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的理解Java里面的必检异常和非必检异常的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 做梦梦到天宫怎么回事
- 下一篇: 在Java 里面怎么比较字符串