C# 截獲某個域中未捕獲的異常 CLR20R3 程序終止的幾種解決方案


AppDomain.UnhandledException可以獲的異常,卻截不下來,求解

 

AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;

 

在.Net1.0/1.1下,非主線程的未處理異常將被忽略。這本身不是好事,所以2.0后該行為更改了。
像你的情況可以要求程序兼容1.1行為。
1、添加一個配置文件(App.Config)
2、加入runtime節並指定legacyUnhandledExceptionPolicy:

 

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <runtime>
    <legacyUnhandledExceptionPolicy enabled="1"/>
  </runtime>
</configuration>

 

主線程異常就好處理了。

注:如果“域里試着執行代碼”不用創建線程,則更干凈的做法是設定域權限,使他不能創建線程。同樣主線程異常很好處理。

 

 

你采取的是無視異常的方式,不過這種方式有兩個小缺點:運行沒問題,但是卻很難去調試,因為調試時能檢測到異常;在console下,異常依然會顯示在黑屏上。不過這都是小問題,不怎么影響運行就行了:)

“域里試着執行代碼”,代碼好多是別人的,很難保證里面不會創建線程,如果加限制可能使代碼無法正常運行。

微軟的機制還不算太全,勉強用吧

 

http://bbs.csdn.net/topics/350074469


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM