PrivilegedActionException
PrivilegedActionException (특권 행동 예외)
AccessController.doPrivileged에 의해 특권 계산을 수행하다가 PrivilegedExceptionAction이 던진 예외를 감싸는 예외입니다.
본문
PrivilegedActionException은 Exception을 상속하는 예외로, 특권 계산이 PrivilegedExceptionAction.run()에서 던진 예외(체크 예외)를 래핑합니다. 특권 스코프(privileged scope)로 진입하는 데 사용된 AccessControlContext를 함께 보관합니다.
이 예외에는 호출 스택이 항상 포함되지는 않습니다. 즉, 이 예외가 생성된 시점의 스택 정보 대신 원래 예외가 던져진 지점의 스택을 포함할 수 있습니다. 따라서 이 예외의 전체 스택 트레이스를 로그처럼 기록하는 것은 권장되지 않습니다.
PrivilegedActionException이 제공하는 주요 메서드는 다음과 같습니다.
public Exception getException()— 이 예외로 인해 발생한 예외를 반환합니다. 주의: 이 메서드는Throwable.getCause()와 달리 래핑된 예외를 반환합니다.public Throwable getCause()— 이 예외의 원인을 반환합니다.public String toString()— 이 예외의 문자열 표현을 반환합니다. 원래 예외의 정보를 포함합니다.
사용 시에는 getException()으로 원래 예외를 꺼내 적절히 처리해야 합니다.