2011-07-28 180 views
0

我遇到了.NET應用程序的問題。 它終止而不會引發任何異常。如果我在Visual Studio的調試模式下啓動它,調試終止也沒有任何錯誤消息。異步.NET異常

我發現它描述的是,當CLR拋出一個以下例外出現這種情況後StackOverflowException in .NET
- ThreadAbortException
- OutOfMemoryException異常
- StackOverflowException

但我怎麼能確定這些異常被扔在我的案件?
是否有可能記錄異常,並可能至少得到一個堆棧跟蹤或類型的exeption?

我試圖編寫第二個應用程序,它在一個單獨的進程中啓動另一個應用程序。通過這種方法,我可以檢測到進程何時終止,但我可以通過這種方式得到的唯一信息是退出代碼-532459699。有誰知道這意味着什麼?

+0

似乎COM +相關 - 見http://social.msdn.microsoft.com/Forums/en-US/vsx/thread/b9328870-9ecf-4c91-9880-cfe9c577de7d/ – Yahia

回答

0

嘗試設置Visual Studio -> Debug -> Exceptions -> CLR Exceptions

0

你配置Visual Studio調試器來捕獲所有拋出的異常? 如果沒有去調試/例外...,並選中拋出列下旁邊的公共語言運行庫異常

0

處理的程序在主域例外:

AppDomain.CurrentDomain.UnhandledException += OnCurrentDomain_UnhandledException; 

//Add these too if you are in windows forms application 
Application.ThreadException += OnApplication_ThreadException; 

Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException); 

那麼,如果異常拋出只記錄它,你也可以從這裏重新啓動你的程序,而不需要另一個應用程序來觀察你的過程。

private static void OnCurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) 
{ 
#if DEBUG 
    System.Diagnostics.Debugger.Break();//we will break here if we are in debug mode. 
#endif//DEBUG 

    LogException(e); 
    RestartTheApplication();  
}