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):
}
이 동작은 나에게 유용하게 보입니다. –