2014-01-08 47 views
4

在我的C#/ WPF/.NET 4.5的程序,我試圖做一個斷開()一個插座上,當我這樣做,我得到類型的如何在Socket上調試第一次機會異常?

第一次機會異常「System.Net .Sockets.SocketException' 發生在System.dll中

。 。 。在Visual Studio輸出窗口中。

我的代碼包裝在try/catch中,但它永遠不會落在catch中。 。 。

try 
     { 
      if (_TCPConn.Connected) 
      { 
       _TCPConn.Shutdown(SocketShutdown.Both); 
       _TCPConn.Disconnect(true); // SocketException 
      } 
     } 
     catch (Exception e) 
     { 
    . . . 
     } 

直到此時的插座工作正常 - 它的使用與一些製造機械進行溝通,所有的東西完美的作品。我已經試過這個,並且沒有Shutdown(),結果相同。如果我讓程序在第一次機會異常後繼續運行,那麼整個程序就會消失並退出調試器。然後,在輸出窗口中的消息只是說

程序 '[0xE6C] ProcFacTest.vshost.exe:託管(v4.0.30319)' 具有與 代碼0(爲0x0)退出。

我該如何找出是什麼原因造成的?

+8

在你的IDE達到 「System.Net.Sockets.SocketException」

  • 檢查 「時拋出」 ,單擊頂部的Debug,Exceptions,然後展開「Common Language Runtime Exceptions」,找到「System.Net.Sockets」並勾選「Thrown」複選框。再次運行該應用程序,它應該會顯示你。 – Brandon

  • +0

    謝謝!這非常有幫助! – user316117

    回答

    15

    第一步是禁用「只是我的代碼」。這可能不應該是必須的,但IDE可能會將您的用戶代碼與系統代碼混淆並導致異常被抑制。我一般做這做例外調試

    • 工具時 - >選項 - >調試
    • 取消選中「啓用JUSTY我的代碼調試」

    下一步是告訴Visual Studio來打破時特別的例外被拋出。

    • 調試 - >例外
    • 展開 「公共語言運行庫異常」,直到你爲這個例外
    相關問題