鍍金池/ 問答/Java/ java某些情況能不能捕獲空指針異常代替非空判斷

java某些情況能不能捕獲空指針異常代替非空判斷

假如一段多次重復運行的代碼中,剛開始運行會報出空指針異常(原因是生產(chǎn)者還沒開始生產(chǎn)),但之后就再也不會發(fā)生空指針異常,與其每次都判斷非空,能不能使用捕獲空指針異常代替非空判斷?

例如:

public Set<ChatMessage> getRoomCacheMessage(int chatroomId, Date lastMessageTime) {
        Set<ChatMessage> resultSet = new HashSet<ChatMessage>();
        //剛開始運行roomMessageMap.containsKey(chatroomId)為false,有消息以后恒為true
        for(ChatMessage chatMessage :MessageMap.get(chatroomId)) {
            //某些操作
            }
        }
        return resultSet;
    }

只是想問遇到這樣的某種以后恒為真的判斷,能不能用捕獲運行時異常來代替判斷?

回答
編輯回答
命于你

1 安全區(qū)內(nèi)的代碼可以不用判斷,對象是否為空可以讓可信的調(diào)用方負責。代碼開發(fā)測試中可以用assert保證非空,經(jīng)過充分測試后的上線是可以去掉assert。
2 外部的調(diào)用、非信任方的調(diào)用(對外提供的rest接口、ws服務、rmi調(diào)用或其他協(xié)議),必須進行判斷。

2017年1月28日 16:19
編輯回答
玩控

可以,不過有一個原則就是不要用Exception來代替條件判斷,遵不遵守你自己決定吧。

我猜你可能考慮的是效率問題,實際上JIT會替你優(yōu)化的。

2017年10月17日 03:05