我有一個用C#編寫的可執行文件,它在一臺計算機上運行良好,但在另一臺計算機上不提供錯誤而崩潰。創建一條報告C#應用程序內部任何地方崩潰的錯誤消息
有,我可以添加到我的代碼,將轉儲所有有關飛機墜毀無論身在何處的代碼中出現錯誤的信息,一類?
我見過this職位,但我希望能創造條件,存在於我的代碼「捕獲所有」錯誤處理類。
我有一個用C#編寫的可執行文件,它在一臺計算機上運行良好,但在另一臺計算機上不提供錯誤而崩潰。創建一條報告C#應用程序內部任何地方崩潰的錯誤消息
有,我可以添加到我的代碼,將轉儲所有有關飛機墜毀無論身在何處的代碼中出現錯誤的信息,一類?
我見過this職位,但我希望能創造條件,存在於我的代碼「捕獲所有」錯誤處理類。
嘗試的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秒後。然後用引發的自定義異常調用全局異常處理程序。
我不知道這是否適用於託管多個應用程序域名的應用程序 – Leo
@Leo否,它似乎不適用。但是,如果您要創建更多的應用程序域,那麼爲每個域註冊相同的未處理的異常處理程序通常很簡單。 –
在該「其他」pc上調試項目並檢查發生錯誤的位置。 – Max
你還沒有說明這是什麼類型的應用程序。例如,ASP.NET應用程序中的全局異常處理通常與WinForms應用程序不同。 –
道歉。這是一個XNA Framework 4.0項目,它還包含用於加載和保存文件的WinForms代碼。 – user1423893