空指針異常避免方式(一次空指針的排查盛宴)
2023-10-17 09:23:57 1
在一次上線的過程中,通過觀察日誌發現有java.lang.NullPointerException的異常出現:
異常堆棧
但這個空指針異常並不是我們的服務拋出的,顯示的是下遊服務拋出來的,但和下遊服務的開發人員確認,他們最近沒有發布過服務。
仔細觀察日誌發現:我們的服務在對下遊服務發起RPC調用時,RPC框架在調用下遊服務的client包時,執行了ListThriftCodec.write方法,而這個方法執行到boxedLongToLong方法時,拋出了java.lang.NullPointerException的異常。
觀察到這,初步判斷是:我們的服務在調用下遊服務時,給一個Long類型的參數傳了null到下遊,導致RPC框架Long轉Long的時候拋出了空指針異常。
然後仔細觀察代碼發現:我們對一個Long型參數沒有做判空,把它寫入到ArrayList中傳給了下遊,所以就出現了上面的異常。
,