java类的方法重写时规定子类方法重写不能抛出超越父类方法定义的异常类的范围这个时没错的但是对于抽象方法或者接口竟然编译运行通过:
举例如下:
import java.io.IOException;class MyException extends Exception {}interface Inf1 {
void test1() throws MyException;
}class A implements Inf1 {
public void test1() throws java.lang.NumberFormatException {
// public void test1() throws IOException {
NumberFormatException e = new NumberFormatException("测试");
throw e ; }
}如上NumberFormatException 和 MyException时没有继承体系的,但是该方法编印和运行都正确
但是大家看注释的那一行,如果抛出IOException 则编译出错IOException 未已检测异常
NumberFormatException 和MyException为未检测异常有人对异常机制内部研究过的来解释一下
举例如下:
import java.io.IOException;class MyException extends Exception {}interface Inf1 {
void test1() throws MyException;
}class A implements Inf1 {
public void test1() throws java.lang.NumberFormatException {
// public void test1() throws IOException {
NumberFormatException e = new NumberFormatException("测试");
throw e ; }
}如上NumberFormatException 和 MyException时没有继承体系的,但是该方法编印和运行都正确
但是大家看注释的那一行,如果抛出IOException 则编译出错IOException 未已检测异常
NumberFormatException 和MyException为未检测异常有人对异常机制内部研究过的来解释一下
解决方案 »
- 访问受保护的变量问题??
- 下载了 个 绿色版的 editplus 可是打开 html jsp java 文件 都没高亮显示???
- 有关JAVA程序执行问题
- 如果一个类class A { final int i; } 那么类 class B extends A { } 当中还能不能继承 的包含 i 这个变量呢?
- JFreeChart画图问题
- 有段时间没来CSDN了,发现自己成两颗星星了,散分祝贺一下!
- 连接或结果集con.close()和con=null有什么区别
- Swing问题求助
- Applet能实现这些吗???
- 多线程/并发-happens-before-有一处不理解-大龄程序员求助
- 安装J2SE问题
- java重写方法
void test1() throws MyException;
}修改为
abstract class Inf1{
abstract void test1() throws MyException;}也是一样的的了
throws java.lang.NumberFormatException 属于声明一个运行时异常。由运行时异常无需声明,所以编译器在编译时会忽略这句。
===================================================================================是正确的答案RuntimeException 是那些可能在 Java 虚拟机正常运行期间抛出的异常的超类。 可能在执行方法期间抛出但未被捕获的 RuntimeException 的任何子类都无需在 throws 子句中进行声明。 java.lang.Object
java.lang.Throwable
java.lang.Exception
java.lang.RuntimeException
java.lang.IllegalArgumentException
java.lang.NumberFormatException
void test1() throws IOException;
} class A implements Inf1 {
public void test1() throws MyException {
// public void test1() throws IOException {
NumberFormatException e = new NumberFormatException( "测试 ");
throw e ; }
}
class MyException extends IOException { } 这样写就可以通过