考慮下面的代碼經過檢查異常
private int meth()
{
try
{
return 1;
}
catch(Exception ex)
{
return 2;
}
finally
{
return 3;
}
}
當aforeseen代碼被編譯,「異常」被視爲未經檢查的異常。這是編譯錯誤不occur.Consider我聲明我自己的異常「無法到達catch塊的例外是從來沒有在try塊拋出」,
class MyException extends Exception
{
}
,並在代碼
private int meth()
{
try
{
return 1;
}
catch(MyException me)
{
return 2;
}
finally
{
return 3;
}
}
在此使用它「無法訪問的catch塊MyException永遠不會在try塊中拋出」編譯錯誤發生。爲什麼在第一種情況下,「Exception」被視爲RuntimeException,在第二種情況下,即使「MyException」是「Exception」的子類,它將被視爲檢查異常。有人可以幫我解決這個問題嗎?
這將是我的猜測 - 因爲它把JVM異常的異常,它可以拋出 - 但它知道一個用戶定義的異常不能被拋出,除非是在嘗試「拋」打電話的任何地方。 – nlaq 2009-07-10 04:15:27