日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

理解Java里面的必检异常和非必检异常

發(fā)布時(shí)間:2023/11/29 java 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 理解Java里面的必检异常和非必检异常 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

問(wèn)題:理解Java里面的必檢異常和非必檢異常

Joshua Bloch在"Effective Java"里面說(shuō)過(guò)

在可恢復(fù)的條件下和編程錯(cuò)誤導(dǎo)致的運(yùn)行時(shí)錯(cuò)誤時(shí),使用必檢異常(第二版的第52頁(yè))

讓我們來(lái)看一下我對(duì)這個(gè)的正確理解吧

下面是我對(duì)必檢異常的理解

try{String userInput = //read in user inputLong id = Long.parseLong(userInput); }catch(NumberFormatException e){id = 0; //通過(guò)設(shè)置ID為0,來(lái)恢復(fù)這種情況 }

1.上面的代碼是否能被看作必檢異常

2.運(yùn)行時(shí)異常是一個(gè)非必檢異常嗎?

下面是我對(duì)非必檢異常的一些理解

try{File file = new File("my/file/path");FileInputStream fis = new FileInputStream(file); }catch(FileNotFoundException e){//3. 這里我應(yīng)該干什么//我應(yīng)該 "throw new FileNotFoundException("File not found");"?//應(yīng)該寫日志嗎?//或者應(yīng)該 System.exit(0);? }
  • 現(xiàn)在看來(lái),上面的代碼也不可能是一個(gè)必檢的異常了?我可以嘗試像這樣恢復(fù)嗎?(注意:我的第三個(gè)問(wèn)題在上面代碼的catch那里)
  • try{String filePath = //read in from user input file pathFile file = new File(filePath);FileInputStream fis = new FileInputStream(file); }catch(FileNotFoundException e){//友好地提升用戶一個(gè)錯(cuò)誤信息//以某種方式要求用戶重新輸入路徑 }
  • 為什么我們需要這樣做?
  • public void someMethod throws Exception{}

    為什么要把這個(gè)異常拋出?直接處理不是更快更好嗎?

    6.我應(yīng)該直接拋出確切的異常還是使用Exception去覆蓋掉他

    回答一

    是不是必檢異常和你是否捕捉和你在捕獲異常的代碼塊里面干了什么無(wú)關(guān)。它是異常類的一種屬性。任何異常都是Exception類的一個(gè)子類(除了運(yùn)行時(shí)異常)并且它的子類都是必檢異常

    Java的編譯器強(qiáng)制要求你捕獲異?;蛘咴诜椒ê灻莻€(gè)聲明。它們可以用來(lái)提高程序的安全性,但是大部分人認(rèn)為它不會(huì)帶來(lái)程序設(shè)計(jì)上的問(wèn)題

    為什么要把這個(gè)異常拋出?直接處理不是更快更好嗎?

    因?yàn)檫@是異常的完整內(nèi)容。如果沒(méi)有這種可能性,你就不需要這些異常了。它們能夠讓你在你選擇的層級(jí)去處理異常,而不是強(qiáng)制讓你在異常發(fā)生的底層級(jí)的方法里處理這些異常

    文章翻譯自Stack Overflow:https://stackoverflow.com/questions/6115896/understanding-checked-vs-unchecked-exceptions-in-java

    創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

    總結(jié)

    以上是生活随笔為你收集整理的理解Java里面的必检异常和非必检异常的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。