簡體   English   中英

java.lang.exception.getCause() 每次都為 null

[英]java.lang.exception.getCause() gets null every time

在我開發的其中一個軟件中,我試圖管理異常機制。

在程序的某個地方,我做了類似的事情;

IF(my condition not allowed){
    throw new Exception("My condition not allowed", null)
}

我使用 java.lang.exception 的參數拋出 null 以了解這與程序錯誤無關。 (我沒有機會創建自己的自定義異常,請考慮)

在程序上方的某個地方,我捕獲了這樣的異常;

}catch(Exception e){
if(null == e.getCause)
    do.somethingThatIWantToCatch();
}else{
    do.somethingProgramaticalError();
}

這里的問題是; 我的代碼可能會拋出一些我不知道的東西,比如 NullPointerException、ArrayIndexOutOfBoundsException 等......

在這一點上,我希望 e.getCause() 不應該為 null,如果我遇到編程錯誤,但是我總是得到 NULL 並執行我的 do.somethingThatIWantToCatch(); 狀態一直。

我該如何處理這種情況並執行我的 do.somethingProgramaticalError(); 健康)狀況 ???

永遠不應該拋出Exception的實例(或其未經檢查的子RuntimeException )。 您應該始終找到一個合適的子類來拋出,或者如果還沒有合適的子類,則創建自己的子類。

捕獲Exception將捕獲陽光下的所有類型的異常,包括您關心的NullPointerException和您不關心的其他異常類型。 最好盡可能具體地說明您捕獲的異常類型,以便不會處理您不想無意中處理的其他異常。

至於getCause() ,這通常是傳遞到另一個異常的構造函數中的異常。 您遇到的絕大多數例外情況都是如此。

暫無
暫無

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

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