2009-12-23 120 views
4

有沒有辦法在MFC VC++ 2008應用程序中捕獲所有未捕獲的異常?有沒有像這樣的Java代碼:VC++應用程序中的全局未捕獲異常處理程序?

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()); 
    } 
}); 

處理程序應該最好捕獲所有類型的異常。

回答

4

這取決於你試圖抓住什麼。如果您只是想要C++異常,那麼請使用set_unexpectedset_terminate來設置您自己的處理程序。如果你想要所有的Windows例外,那麼你使用SetUnhandledExceptionFilter來指定一個頂級處理程序。

捕獲所有Windows異常應該在大多數情況下也捕獲所有C++異常,但事實並非總是如此,所以您最好儘可能使用這兩種方法來捕獲。最後一個CRT有些古怪(見this),這可能意味着並非所有的例外都會被捕獲。

相關問題