C# 截获某个域中未捕获的异常 CLR20R3 程序终止的几种解决方案
2016-09-06 18:01
369 查看
AppDomain.UnhandledException可以获的异常,却截不下来,求解
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
在.Net1.0/1.1下,非主线程的未处理异常将被忽略。这本身不是好事,所以2.0后该行为更改了。
像你的情况可以要求程序兼容1.1行为。
1、添加一个配置文件(App.Config)
2、加入runtime节并指定legacyUnhandledExceptionPolicy:
主线程异常就好处理了。
注:如果“域里试着执行代码”不用创建线程,则更干净的做法是设定域权限,使他不能创建线程。同样主线程异常很好处理。
你采取的是无视异常的方式,不过这种方式有两个小缺点:运行没问题,但是却很难去调试,因为调试时能检测到异常;在console下,异常依然会显示在黑屏上。不过这都是小问题,不怎么影响运行就行了:)
“域里试着执行代码”,代码好多是别人的,很难保证里面不会创建线程,如果加限制可能使代码无法正常运行。
微软的机制还不算太全,勉强用吧
http://bbs.csdn.net/topics/350074469
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
相关文章推荐
- C# CLR20R3 程序终止的几种解决方案
- clr20r3 system.InvalidOperationException 程序终止的几种解决方案
- 【转】CLR20R3 程序终止的几种解决方案
- 【转】CLR20R3 程序终止的几种解决方案
- 【转】CLR20R3 程序终止的几种解决方案
- WPF 程序 处理未捕获异常,和程序莫名终止说拜拜
- Android程序运行过程中因未捕获异常而异常终止
- Android-小小设置永久解决程序因为未捕获异常而异常终止的问题
- Android-小小设置永久解决程序因为未捕获异常而异常终止的问题
- C#WinForm程序异常退出的捕获、继续执行与自动重启
- Android-小小设置永久解决程序因为未捕获异常而异常终止的问题
- 编写高质量代码改善C#程序的157个建议——建议65:总是处理未捕获的异常
- Win8 安装Oracle 10g 提示“程序异常终止”的解决方案
- C# CLR20R3 程序终止的几种解决方案 【转】
- Win8 安装Oracle 10g 提示“程序异常终止”的解决方案
- Win8 安装Oracle 10g 提示“程序异常终止”的解决方案
- 编写高质量代码改善C#程序的157个建议——建议66:正确捕获多线程中的异常
- clr20r3 system.InvalidOperationException 程序终止的几种解决方案
- Android-小小设置永久解决程序因为未捕获异常而异常终止的问
- Win8 安装Oracle 10g 提示“程序异常终止”的解决方案