假設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