2011-09-07 243 views
1

我們已通過以下方式註冊了未處理的異常。該應用程序是一個遠程服務器。如果遠程處理服務器拋出未處理的異常,則不處理未處理的異常處理程序。可能是什麼問題呢?未處理的異常未被處理程序捕獲

[STAThread] 

[Obfuscation(Exclude = true)] 
static void Main(string[] args) 
{ 

    Application.ThreadException += new ThreadExceptionEventHandler(OnThreadException); 
    AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(OnUnhandledException); 
    . 
    . 
    . 

    Application.EnableVisualStyles(); 
    Application.Run(form); 

} 
+2

拋出的異常(stacktrace)在什麼地方拋出並拋出在同一個appdomain中? – Polity

+0

這個問題發生在x64操作系統上嗎? – yas4891

+0

該問題發生在32位操作系統 – Maanu

回答

1

希望此方法可以幫助您'Application.SetUnhandledExceptionMode'。它指示應用程序如何響應未處理的異常。

static void Main(string[] args) 
{ 

    Application.ThreadException += new ThreadExceptionEventHandler(OnThreadException); 
    AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(OnUnhandledException); 

    Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException); 

    Application.EnableVisualStyles(); 
    Application.Run(form); 

} 
0

如果它是一個遠程服務器和異常發生的客戶端交互的一部分,那麼異常將被髮送到客戶端,而不會導致服務器崩潰。

+0

服務器應用程序崩潰。這意味着這個異常不會作爲客戶端交互的一部分拋出 – Maanu

+0

哦,它確實崩潰了,不確定。 – TheCodeKing

+0

如果服務器崩潰,應該怎麼做? – Lucas