class ThrowNull {
public static void main(String[] args) {
throw null;
}
}
我們知道拋出規則throw ThrowableInstance;
,其中ThrowableInstance
必須是Throwable類型或Throwable的子類的對象。爲什麼「throw null」不會在Java中創建編譯錯誤?
簡單類型(如int或char)以及非Throwable類(如String和Object)不能用作例外。 null
是表示空值的特殊Java文字。
那麼爲什麼throw null;
會在這段代碼中編譯?
它爲什麼會導致編譯時錯誤? – BoltClock
儘管目前Java編譯器本身並未將其標記爲問題(除非語言規範在未來某個時間發生變化),但顯然它是靜態檢查器(如「聲納」)的候選者,可以根除並指出開發商。也許開發人員想寫「return null」... –
我們知道規則是調用'String a(){return null}'的結果必須是(子)類或String的對象。簡單的類,如Throwable或BigInteger不能用作字符串。空是表示空值的特殊Java文字。那爲什麼'返回null'不會產生任何編譯時錯誤????? !!!!我在這裏暴露你的雙重標準。爲什麼你抱怨'拋出null'而不是'return null'?因此我無法提出你的問題。它通過雙重標準過於局部化。 – Val