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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java catch 空指针异常_关于Java:捕获空指针异常

發布時間:2025/3/12 java 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java catch 空指针异常_关于Java:捕获空指针异常 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我想問的是有關Java的多數知識,但我想它適用于許多語言。

考慮,

if(myVariable==null){

doSomethingAboutIt();

}

else carryOn(myVariable);

try{

carryOn(MyVariable);

}catch(NullPointerException e ){

doSOmethingAboutIt();}

這兩個代碼塊基本相同嗎? 是否有任何理由選擇第二種方法? 當然,myVariable永遠不會為空,但是似乎最好的檢查方法是執行簡單的if語句。

NullPointerException應該被視為程序員錯誤。 不要抓住他們。 確保它們永遠不會被拋出。

從我的立場來看,我不愿考慮這兩個代碼塊的意圖。當然,他們會經歷相同的錯誤處理,但這是開發人員的決定,而不是其他任何事情。

對我來說,if正在測試以查看是否可以使用值,如果不能使用,則可以解決該問題。 try...catch塊假定該值是有效的,如果不是有效的,它就會變通以解決異常行為。

當出現異常,程序中斷代碼(除以零等)時,應首先考慮異常。

不,這些代碼塊根本不一樣。

在第一個代碼塊中,您要檢查myVariable是否為null,并且僅在一個時間點執行此操作。稍后,myVariable可能會變成null,并最終拋出NullPointerException。如果發生這種情況,第二個代碼段將捕獲該異常,但第一個則不會。

此外,第二個代碼段將捕獲NullPointerExceptions,該NullPointerExceptions可能是由于carryOn(myVariable)調用而從調用堆棧中的任何位置拋出的。這真糟糕;您正在吞下一個例外,該例外是在特定變量可能完全是其他變量的情況下假設null運行的。

使用第一個代碼段。

一個分開的想法。 如果您正在捕獲任何運行時異常(例如NullPointerException),則可能是您做錯了什么。 以編程方式確定此類異常的來源非常困難,因此正確處理它們非常困難。

您僅將例外用于例外情況。使用第一段代碼,而不是第二段。

好吧,carryOn(MyVariable);本身不會拋出NPE,除非carryOn中的其他內容引用了空實例上的方法或屬性調用。

與捕獲異常相比,捕獲異常的計算量更大,因為生成異常需要生成堆棧跟蹤等。

我認為這也會導致"更干凈"的代碼。

也可以看看:

-Java try / catch性能,是否建議將try子句中的內容保持在最低限度?

-嘗試捕獲性能Java

第一種方法比捕獲異常更好,因為這會導致性能下降。我認為最好的方法是應用Null Object模式。 Guava庫提供了Optional類,您可以利用它而不是創建自己的類。

總結

以上是生活随笔為你收集整理的java catch 空指针异常_关于Java:捕获空指针异常的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。