PrivilegedExceptionAction
PrivilegedExceptionAction (예외 던지는 특권 행동)
권한(privilege)이 활성화된 상태에서 실행되며 하나 이상의 체크 예외를 던질 수 있는 계산을 나타내는 인터페이스입니다.
본문
PrivilegedExceptionAction은 AccessController.doPrivileged로 권한을 가진 상태에서 실행되는 계산을 캡슐화합니다. PrivilegedAction과 달리 체크 예외를 던질 수 있는 계산에 사용됩니다. 체크 예외를 던지지 않는 계산에는 PrivilegedAction을 사용해야 합니다.
이 인터페이스가 정의하는 메서드는 다음과 같습니다.
public T run() throws Exception— 이 액티비티가 수행하는 계산을 실행합니다. 체크 예외를 던질 수 있습니다. 실행 중 던져진 체크 예외는AccessController.doPrivileged(...)가PrivilegedActionException으로 래핑해 다시 던집니다.
사용 예시는 다음과 같습니다.
// 네트워크 작업처럼 체크 예외를 던질 수 있는 특권 계산
try {
String result = AccessController.doPrivileged(
(PrivilegedExceptionAction<String>) () -> {
// ... 체크 예외를 던질 수 있는 작업 ...
return "done";
});
} catch (PrivilegedActionException e) {
// e.getException()으로 원래 예외를 꺼냄
}