我對於例外有些疑問。需要說明的例外代碼
誰能告訴我,爲什麼java的犯規讓我們在子類中創建的Checked Exception,同時允許未經檢查的異常在子類中
下面exampple拋出編譯時錯誤,當我使用「拋出IOException異常」,但它不拋當我在子類中使用「拋出ArithmeticException」時出現任何錯誤。我只想知道它背後的真實原因,那麼可以嗎?
這裏是代碼(你會得到編譯時錯誤)
package com.exception.test;
import java.io.IOException;
public class Parent {
void msg() {
System.out.println("Parent...");
}
public static void main(String[] args) {
Parent parent = new Child();
parent.msg();
}
}
class Child extends Parent {
void msg() throws IOException {
System.out.println("Child...");
}
}
//使用unCheckedException
package com.exception.test;
import java.io.IOException;
public class Parent {
void msg() {
System.out.println("Parent...");
}
public static void main(String[] args) {
Parent parent = new Child();
parent.msg();
}
}
class Child extends Parent {
void msg() throws ArithmeticException {
System.out.println("Child...");
}
}
重寫方法有規則。在子類中,在重寫的方法中,你只能拋出超類聲明的異常或超類異常類型的異常。例如,如果超類的方法methodA聲明IOException,則子類的重寫方法可以拋出IOException或例如SocketException(IOException的子類)。總是可以聲明並拋出運行時異常。 – michal