InvalidResourceExceptionがResourceExceptionのサブクラスであると想定します。2つの方法を定義します。
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のJDK1.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):
}