2011-12-21 174 views
-1

我有一個任務來預測程序的輸出而不打印它。兩個例外之間的區別

在這個程序人沒有overwritte toString()方法和輸出

Exception in thread "main" 
java.lang.MethodNotFoundException 

,第二個的變體是

cannot resolve symbol 
symbol: method toString() 

是什麼這些2之間差?

+0

**請向我們展示您的_code _。** – SLaks 2011-12-21 20:59:19

+2

一個技巧,這些都不會發生,toString()是爲所有java對象定義的。 – josefx 2011-12-21 21:20:03

+0

使用作業標籤,如果這是一個作業問題 – ethan 2011-12-21 21:53:57

回答

0

前者是運行時異常,第二種是編譯錯誤,不允許代碼首先運行。如果你運行一個toString方法而不覆蓋它,這兩者都不應該出現,除非你定義了一個顯式的類層次結構,其中你有一個類拋出前一個異常,然後讓它的一個孩子無法覆蓋它。

+0

非常感謝你!=)) – 2011-12-22 09:05:35

0

首先在運行時出現,其中動態地測試方法存在並且它不存在。

第二個是在編譯時,因爲一個方法不存在。

+0

非常感謝你!=) – 2011-12-22 09:04:20

0

第二個異常是一個Checked異常,它可以在應用程序中被捕獲和處理,如果你沒有捕獲到第二類異常,編譯器會在編譯期間拋出一個錯誤。

while the 1st exception is Unchecked Exception。它在編譯期間不能被編譯器檢測到,並且你無法捕捉它。更好的稱之爲魔鬼異常:)

+0

這是完全錯誤的。 – SLaks 2011-12-22 03:27:23

+0

非常感謝你!=) – 2011-12-22 09:03:51