当我编译以下代码时,一切正常,输出如预期:
class Propogate {
public static void main(String[] args) {
Propogate obj = new Propogate();
try {
obj.reverse("");
} catch (IllegalArgumentException e) {
System.out.println(e);
} finally {
System.out.println("That's all folks");
}
}
String reverse(String s) {
if(s.length() == 00) {
throw new IllegalArgumentException();
}
String reversed = "";
for(int i=s.length() - 1; i >= 0; --i) {
reversed += s.charAt(i);
}
return reversed;
}
}
节目结果:
java.lang.IllegalArgumentException
That's all folks
但是,当我运行完全相同的代码但将异常类型从
IllegalArgumentException to plain old exception all I get is:Propogate.java:14: error:
unreported exception Exception; must be caught or declared to be thrown
throw new Exception();
^
1 error
我无法使用 try / catch 语句处理的父类型 Exception() 有什么特别之处?为什么 IllegalArgumentException() 允许我用 try / catch 语句处理它就好了。这些是一个晚上因害怕失败而保持清醒的想法,不,只是参加 SCJP 考试。