我有類拋出更高的檢查異常在重寫的方法。我知道這是不允許的,但爲什麼這個代碼有效?爲什麼類在拋出的方法中引發更高的檢查異常?
package personaltestlevel1;
public class OverrideExcept {
public static void main(String args[]) {
S1 s = new S2();
try
{
s.show();
}catch (NullPointerException e){
System.out.printf(e.getMessage());
}
}
}
class S1{
public void show() throws NullPointerException {
try
{
System.out.println("not overriden");
}catch (Exception e){
throw new NullPointerException();
}
}
}
class S2 extends S1{
public void show() throws RuntimeException {
try
{
System.err.println("overriden");
}catch (Exception e){
throw new RuntimeException();}
}
}
我已經更新了我的checked異常樣本 - 它的工作原理呢。
他們沒有檢查異常! – 2013-03-21 18:59:39
我已更新我的示例與檢查異常 - 無論如何它的作品。 – vico 2013-03-21 19:22:37
哪個版本的show()拋出一個檢查的異常?據我所知,一個拋出RuntiimeException和另一個NullPointerException,都未選中。 – 2013-03-21 19:34:45