PrivilegedExceptionAction

PrivilegedExceptionAction (예외 던지는 특권 행동)

권한(privilege)이 활성화된 상태에서 실행되며 하나 이상의 체크 예외를 던질 수 있는 계산을 나타내는 인터페이스입니다.

출처: Java API Reference

본문

PrivilegedExceptionActionAccessController.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()으로 원래 예외를 꺼냄
}

더 알아보기 (Learn more)

Java 공식 API