강의 메모 - 스레드 예외처리 - UncaughtExceptionHandler #
개요 #
- 기본적으로 스레드의 run() 은 예외를 던질 수 없기 때문에 예외가 발생할 경우 run() 안에서만 예외를 처리해야 한다
- RuntimeException 타입의 예외가 발생할 지라도 스레드 밖에서 예외를 캐치할 수 없고 사라진다
- 스레드가 비정상적으로 종료되었거나 특정한 예외를 스레드 외부에서 캐치하기 위해서 자바에서는 UncaughtExceptionHandler 인터페이스를 제공한다
UncaughtExceptionHandler #
- 캐치 되지 않는 예외에 의해 Thread가 갑자기 종료했을 때에 호출되는 핸들러 인터페이스
- 어떤 원인으로 인해 스레드가 종료되었는지 대상 스레드와 예외를 파악할 수 있다
- 예외가 발생하면 uncaughtException 이 호출되고 대상 스레드 t 와 예외 e 가 인자로 전달된다
Thread API #
-
static void setDefaultUncaughtExceptionHandler
- 모든 스레드에서 발생하는 uncaughtException 을 처리하는 정적 메서드
-
void setUncaughtExceptionHandler(UncaughtExceptionHandler ueh)
- 대상 스레드에서 발생하는 uncaughtException 을 처리하는 인스턴스 메서드
- setDefaultUncaughtExceptionHandler 보다 우선순위가 높다
흐름도 #