2014-01-05 19 views
0

我有一個用C#編寫的可執行文件,它在一臺計算機上運行良好,但在另一臺計算機上不提供錯誤而崩潰。創建一條報告C#應用程序內部任何地方崩潰的錯誤消息

有,我可以添加到我的代碼,將轉儲所有有關飛機墜毀無論身在何處的代碼中出現錯誤的信息,一類?

我見過this職位,但我希望能創造條件,存在於我的代碼「捕獲所有」錯誤處理類。

+0

在該「其他」pc上調試項目並檢查發生錯誤的位置。 – Max

+0

你還沒有說明這是什麼類型的應用程序。例如,ASP.NET應用程序中的全局異常處理通常與WinForms應用程序不同。 –

+0

道歉。這是一個XNA Framework 4.0項目,它還包含用於加載和保存文件的WinForms代碼。 – user1423893

回答

2

嘗試的AppDomain異常處理程序:

http://msdn.microsoft.com/en-us/library/system.appdomain.unhandledexception.aspx

代碼示例:

class Program 
    { 
     static void Main(string[] args) 
     { 
      AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; 

      var thr = new Thread(() => 
      { 
       Thread.Sleep(1000); 
       throw new Exception("Custom exception from thread"); 
      }); 
      thr.Start(); 
      thr.Join(); 

      Console.WriteLine("Done"); 
     } 

     static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) 
     { 
      //Log information from e.ExceptionObject here 
     } 
    } 

在這個例子中自定義的全局異常處理程序註冊,然後啓動線程會拋出一個異常1秒後。然後用引發的自定義異常調用全局異常處理程序。

+0

我不知道這是否適用於託管多個應用程序域名的應用程序 – Leo

+0

@Leo否,它似乎不適用。但是,如果您要創建更多的應用程序域,那麼爲每個域註冊相同的未處理的異常處理程序通常很簡單。 –

相關問題