假设 InvalidResourceException 是 ResourceException 的子类。定义两个方法:
void handleException(ResourceException e) {
System.out.println("ResourceException " + e.toString());
}
void handleException(InvalidResourceException e) {
System.out.println("InvalidResourceException " + e.toString());
}
现在下面的代码:
try {
throw new InvalidResourceException("invalid resource");
} catch (ResourceException e) {
handleException(e);
}
打印这个:
ResourceException: com.myPackage.InvalidResourceException: invalid resource
但是下面的代码:
try {
throw new InvalidResourceException("invalid resource");
} catch (InvalidResourceException e) {
handleException(e);
} catch (ResourceException e) {
handleException(e);
}
打印这个:
InvalidResourceException: com.myPackage.InvalidResourceException: invalid resource
这适用于 Sun 的 JDK 1.5.0_15。
这是否符合 Java 标准?
这段代码应该做什么?
Exception e = new InvalidResourceException("invalid resource");
handleException(e);
这段代码应该做什么?
Exception e = new InvalidResourceException("invalid resource");
if (e instanceOf ResourceException) {
handleException(e);
} else if (e instanceOf InvalidResourceException) {
handleException(e);
} else {
handleException(e):
}