規范的編程中,程序中的每一個變量,都需要去if判斷或者try catch去排查空指針嗎,即使在正常邏輯中不會出現null的地方?菜鳥提問,求講解。
2 回答

RISEBY
TA貢獻1856條經驗 獲得超5個贊
不需要,非必要條件下沒必要去做,盡早讓其自然拋出nullPointException
有助于查找到問題。除非是諸如查詢,查不出來也有可能,這個時候盡量做,然后友好拋出異常信息,當然,這個如果是不正常邏輯,也盡量早拋,不要拋null
指針而已。

牛魔王的故事
TA貢獻1830條經驗 獲得超3個贊
不是每個地方都必須要判空的,如果每個地方都去判斷空,你會發現到處都有判空的if...else...語句,這樣代碼會非常糟糕,也不利于代碼維護。
如果是處理外部輸入的邏輯,或是對外服務的接口的實現。那么因為永遠不能外部輸入會有出現什么意外,為空是很可能的,這個時候就一定要處理判空。
如果是內部處理的邏輯,比如在一個類的private方法,通常private方法是為了處理一些公共的邏輯但又不想把邏輯提供出去,這個時候就沒必要去判空。如果空出現空指針,在外層的調用里catch住就行了,做了判空處理,程序運行了半天雖然沒報錯,但是程序卻已經進入一些意外情況。這樣反而不好。
還有一個個人總結的是否需要判空的依據是,當一個變量在邏輯上不出意外的情況下不會為空我就不去做判空。如果在邏輯上很有空能為空那就去做判空,并返回一個錯誤返回,這個錯誤返回很有可能是業務上的返回,如果是一個接口,那么提示輸入字段不合法等等。
添加回答
舉報
0/150
提交
取消