WPF 學習 4 未處理異常的處理

2022-06-25 01:24:09 字數 1546 閱讀 1094

異常不可避免,所有地方都寫try...catch也麻煩,所以有了未處理異常的處理的東東,分別為以下三個事件:

system.threading.tasks.taskscheduler.unobservedtaskexception:occurs when a faulted task's unobserved exception is about to trigger exception escalation policy(出錯的任務中未觀察到的異常將觸發該事件)。在task被垃圾**的時候,析構函式檢測到該task物件還有未被處理過的異常,會丟擲這個異常並觸發,所以感覺總是慢一拍。

第1、2個事件很好理解,在ui執行緒和任務執行緒throw new excepiton("測試")都能測試出來,第3個事件我是折騰好久才找到觸發的地方——比如在1、2事件的方法中又發生了異常,所以也可以理解1、2事件都有引數和方法可以設定成已處理(e.handled=true、e.setobserved()),第3個事件一被觸發,game over。

最後附上我的**

using system;

using system.text;

using system.threading.tasks;

using system.windows;

namespace l3_exception

/// /// 非主線程錯誤

///

///

///

private static void taskscheduler_unobservedtaskexception(object sender, unobservedtaskexceptioneventargs e)

來自:");

}e.setobserved();

restart("task exception", sb.tostring());

}///

///

///

private static void currentdomain_unhandledexception(object sender, unhandledexceptioneventargs e)

內部異常內容:

來自:");

}catch

restart("domain exception", sb.tostring());

}/// /// 主線程錯誤

///

///

///

private static void current_dispatcherunhandledexception(object sender, system.windows.threading.dispatcherunhandledexceptioneventargs e)

內部異常內容:

來自:");

e.handled = true;

restart("主線程異常", sb.tostring());

}private static void restart(string title, string content)

}}

C WinForm捕獲未處理的異常

using system using system.collections.generic using system.windows.forms using system.io namespace gobalexception r n異常訊息 r n異常資訊 r n ex.gettype name,...

C WinForm捕獲未處理的異常

像qq那樣,當程式出現崩潰強制退出之前,捕獲該異常,跳出友好介面進行提示。只需在program.cs 裡加相關 即可實現,全域性任何乙個點出現崩潰,都將在這裡 獲。static class program catch exception ex n異常訊息 n異常位置 n error.gettype ...

C WinForm捕獲未處理的異常

像qq那樣,當程式出現崩潰強制退出之前,捕獲該異常,跳出友好介面進行提示。只需在program.cs 裡加相關 即可實現,全域性任何乙個點出現崩潰,都將在這裡 獲。static class program catch exception ex static void object sender,sy...