2010-11-19 96 views
0

我有一個客戶端服務器應用程序。客戶登錄我的服務器上的帳戶。問題在於我的服務器有時會崩潰,雖然我用try-catch語句包裝了所有類型,但我沒有收到任何消息。客戶端 - 服務器應用程序崩潰

我已經實現的服務器在這裏:。

有沒有人遇到這樣的崩潰?有沒有一個地方可以找到應用程序的錯誤日誌?

我有點絕望,所以任何想法都會很棒。謝謝。

+0

順便說一句,我訪問來自多個線程的變量,而無需使用鎖聲明。這可能是墜機問題嗎? – Alex 2010-11-19 08:15:24

+0

當你的服務器崩潰時,你會得到什麼錯誤?在那裏應該有一個堆棧跟蹤,指向你的代碼的一部分。一旦你發現,如果你自己沒有發現問題,向我們展示導致問題的代碼。 – 2010-11-19 08:19:43

+0

不,沒有!太奇怪了!該程序只是崩潰!我正在尋找各種可能性。服務器代碼不起作用,或者我編寫的其他代碼有問題 – Alex 2010-11-19 08:36:43

回答

2

由於多線程操作,即使您將所有函數包裝在try-catch塊中,應用程序也可能因未處理的異常而崩潰。

try 
{ 
    var t = new Thread(()=> 
     { 
      Thread.Sleep(5000); 
      throw new Exception(); 
     }); 
    t.Start(); 
    //t.Join(); 
} 
catch 
{ 
    //you can't deal with exception here 
    //even though you uncomment `t.Join` 
    //the application will crash even there is a try-catch wrapped 
} 
1

如果您在Visual Studio中以調試模式運行,則可以考慮啓用CLR異常以傳播到用戶控制。我相信它們在默認情況下被禁用,這有時會導致掛起的應用程序沒有任何調試器反饋。 This article on MSDN可能是有趣的。

2

您是否保留示例代碼的這一部分? 添加Console.WriteLine權抓後...

catch 
    { 
     //a socket error has occured 
     break; 
    }