Supposons que InvalidResourceException est une sous-classe de ResourceException. Définissez deux méthodes:Les blocs catch Java utilisent une liaison statique?
void handleException(ResourceException e) {
System.out.println("ResourceException " + e.toString());
}
void handleException(InvalidResourceException e) {
System.out.println("InvalidResourceException " + e.toString());
}
maintenant le code suivant:
imprime ceci:
ResourceException: com.myPackage.InvalidResourceException: invalid resource
Mais le code suivant:
try {
throw new InvalidResourceException("invalid resource");
} catch (InvalidResourceException e) {
handleException(e);
} catch (ResourceException e) {
handleException(e);
}
imprime ceci:
InvalidResourceException: com.myPackage.InvalidResourceException: invalid resource
Ceci est avec le JDK de Sun 1.5.0_15.
Est-ce compatible avec le standard Java?
Que devrait faire ce code?
Exception e = new InvalidResourceException("invalid resource");
handleException(e);
Que devrait faire ce code?
Exception e = new InvalidResourceException("invalid resource");
if (e instanceOf ResourceException) {
handleException(e);
} else if (e instanceOf InvalidResourceException) {
handleException(e);
} else {
handleException(e):
}
Ce comportement me semble utile. –