2009-12-23 2 views
4

MFC VC++ 2008 응용 프로그램에서 모든 catch되지 않은 예외를 catch 할 수 있습니까? 이 Java 코드와 같은 것이 있습니까 :VC++ 응용 프로그램에서 전역 Uncaught 예외 처리기가 필요합니까?

Thread.currentThread().setUncaughtExceptionHandler(
new Thread.UncaughtExceptionHandler() { 
    public void uncaughtException(Thread t, Throwable e) { 
     System.out.println("Oops! We have a exception in Thread '" + t.getName() + "': " + e.toString()); 
    } 
}); 

핸들러는 모든 유형의 예외를 catch하는 것이 바람직합니다.

답변

4

잡으려는 대상에 따라 다릅니다. C++ 예외를 원하면 set_unexpected 또는 set_terminate을 사용하여 자체 처리기를 설정하십시오. 모든 Windows 예외를 원할 경우 SetUnhandledExceptionFilter을 사용하여 최상위 레벨 처리기를 지정합니다.

대부분의 경우 모든 Windows 예외를 catch하면 모든 C++ 예외도 catch해야하지만 항상 그런 것은 아니기 때문에 최대한 두 가지 방법을 모두 사용하여 catch하는 것이 가장 좋습니다. 마지막 CRT에는 다소 이상한 점이 있지만 (this 참조) 모든 예외가 포착되는 것은 아닙니다.

관련 문제