Throwable initCause(Throwable cause) 지정한 예외를 원인 예외로 등록
Throwable getCause() 원인 예외로 반환
public class Throwable implements Serializable {
...
private Throwable cause = this; // 객체 자신(this)을 원인 예외로 등록
...
public synchronized Throwable initCause(Throwable cause) {
...
this.cause = cause; // cause를 원인 예외로 등록
return this;
}
}
try {
startInstall(); // SpaceException 발생
copyFiles();
} catch (SpaceException e) {
InstallException ie = new InstallException("설치중 예외발생"); // 예외 생성
ie.initCause(e); // InstallException의 원인 예외를 SpaceException으로 지정
throw ie; // InstallException을 발생시킨다.
} catch (MemoryException me) {
...
}