假设InvalidResourceException是ResourceException的一个子类。定义了两种方法:Java的catch块使用静态绑定?
void handleException(ResourceException e) {
System.out.println("ResourceException " + e.toString());
}
void handleException(InvalidResourceException e) {
System.out.println("InvalidResourceException " + e.toString());
}
现在下面的代码:
打印此:
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):
}
这种行为对我来说似乎很有用。 – 2009-11-25 19:36:12