我的程序:
class A extends Exception { }
class B extends A { }
public class Human {
public static void main(String[] args) {
try {
throw new B();
}catch(A a) {
System.out.println("Catch A");
}catch(B b) {
System.out.println("Catch B");
}
}
}
编译出错:
Microsoft Windows XP [版本 5.1.2600]
(C) 版权所有 1985-2001 Microsoft Corp.E:\java>javac Human.java
Human.java:10: 已捕捉到异常 B
}catch(B b) {
^
1 错误E:\java>
请问问题出在哪里了?这个程序是浙江大学java视频讲座里的例子,用的是jdk1.4,我用的是jdk1.6
class A extends Exception { }
class B extends A { }
public class Human {
public static void main(String[] args) {
try {
throw new B();
}catch(A a) {
System.out.println("Catch A");
}catch(B b) {
System.out.println("Catch B");
}
}
}
编译出错:
Microsoft Windows XP [版本 5.1.2600]
(C) 版权所有 1985-2001 Microsoft Corp.E:\java>javac Human.java
Human.java:10: 已捕捉到异常 B
}catch(B b) {
^
1 错误E:\java>
请问问题出在哪里了?这个程序是浙江大学java视频讲座里的例子,用的是jdk1.4,我用的是jdk1.6
解决方案 »
- 怎样学好java?
- 关于ServerSocket和Socket的疑惑???
- 唯一的系列号 格式为 3071-7357-1932-2852
- 这是一个拿分的问题,别错过~~
- java连接sql2005 jdbc总测试不通过,提示驱动不匹配。。
- 如何在console窗口输出信息?
- String 类实现了Cloneable接口?
- 为什么JAVA里的main()必须是static的呢?谢谢指教!
- 一个小问题:java bean 组件模型与CORBA 组件模型有什么区别?
- java多线程读取超大文件50~100G并分割为每个5M-20M的小文件
- Statement究竟是干什么的啊,我这两个超简单的语句有错吗?
- 一个计算薪水的程序有错误,大家帮忙看看
所以如果是B异常。在A就已经被捕获了。
}catch(B b) {
System.out.println("Catch B");
}
根本不会被执行。
就像Exception一定要放到最后一样。你把A和B异常的捕获换一下地方就可以了
这属于Java编译器的优化功能, james gosling厉害!!!!