NoSuchMethodError和NoSuchMethodException 區別

NoSuchMethodException繼承自Exception; NoSuchMethodError繼承自Error,通常有兼容性問題時會拋出該異常;程序員

前者是普通的A.b()形式調用,在極其特殊的狀況下,發現A類裏面沒有b方法時拋出,通常狀況下這種錯誤是不會存在的,連編譯前的檢查都無法經過。可是可能在某些極端狀況下出現,好比字節碼在內存中被改了。 後者我估計是在反射的時候,依據傳入的方法名尋找方法時沒找到。 Error表明的是沒法恢復的錯誤,必須由jvm處理或者終止,而Exception是能夠恢復的異常,程序員能夠自行捕獲。jvm

NoSuchMethodError:當應用程序試圖調用類(靜態或實例)的指定方法,而該類已再也不具備該方法的定義時,拋出該異常。一般由編譯器捕獲該錯誤;僅當類定義發生不相容的更改時,在運行時纔會發生該錯誤。繼承

NoSuchMethodException:沒法找到某一特定方法時,拋出該異常。內存

相關文章
相關標籤/搜索