在JDK的API中,有很多類似這樣的語句if (pathname == null) { throw new NullPointerException(); },我是這樣想的——程序員在編寫程序時如何避免未檢測異常呢,就是要先判斷一下,API也是一樣的,它也判斷了,只是說它不知道如何很好的處理就干脆拋出來。好,現在程序員開始編寫代碼,如果程序員在自己的程序裡面沒有判斷是否為空,最後這種空指針異常發生了,程序停止, 突然覺得API的這個判斷好像寫在那裡也沒什麼用啊。 如果程序員在自己代碼中判空了,這句話永遠也執行不到,豈不是更沒什麼用處。
真的好長一段。。。。
OK,回答你的問題,其實你問的是在JDK的API中,而不是普通應用程序,所以這路並不適合所有應用程序。你可以想象一下API的設計,你並不知道輸入參數會是什麼。因為沒有任何方法可以保證輸入的參數不是null,所以在API設計的時候文檔會需要指明,某些參數不允許是null,當然很多情況你可以傳遞進去讓底層自動處理,但是API這麼設計會導致性能下降。所以JDK采用了主動監測機制。順便說一句,JDK7開始,有個新的API Objects.requireNonNull()是專門用來做null參數檢測的。