C# Winform 개발 시 처리되지 않은 예외가 발생할 때 사용하는 이벤트로써,
ThreadException을 사용하면 Winform 스레드에서 발생하는 처리되지 않은 예외를 처리할 수 있다.
UnhandledException의 경우에도 이벤트에서 처리되지 않은 예외를 포착하여 비정상적인 애플리케이션 종료를 방지할 수 있다.
개발을 진행하다 보면 예외처리가 중요하지만 가끔씩 예상할 수 없는 곳에서 에러가 발생하거나 하는 경우, 프로그램이 강제 종료될 수 있는데 이를 방지하기 위해 전체적으로 처리되지 않은 예외를 핸들링할 수 있기 때문에 필수적으로 등록해줘야 하는 이벤트이다.
이를 사용하지 않는 경우 프로그램이 강제 종료될 때 윈도우 '이벤트 뷰어'를 사용하여 왜 프로그램이 강제종료되었는지 확인할 수 있지만, 이 이벤트를 사용하여 강제 종료를 방지하고 로그로 남기면 '이벤트 뷰어'를 확인하지 않고 로그를 통해 어떤 에러가 발생하였는지 확인할 수 있다.
Document
C# Sample Code
메인 Form이 로드될 때, 혹은 개별적으로 프로그램 부팅 시 사용하는 Initialize 부분에서 이벤트를 등록해주고,
해당 이벤트가 발생할 때 로그로 남게 처리해준다.
해당 이벤트 데이터의 Message와 StackTrace를 같이 남겨주어 에러 발생 원인을 파악할 수 있다.
비교
위 코드를 사용하지 않고 예상하지 못한 예외가 발생하였을 때, 프로그램 강제종료 발생 이 후 이벤트 뷰어 확인 결과.
위 코드를 사용했을 때 Console 창에 남겨지는 로그
StackTrace 데이터를 통해 어떤 클래스, 어떤 함수에서, 몇 번째 줄에서 에러가 발생했는지도 확인이 가능하기 때문에 원인 파악이 쉽다.