Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 570|回复: 0

【转】Winform程序未捕获异常解决方法 EventType clr20r3 P1

[复制链接]
  • TA的每日心情
    奋斗
    2024-4-6 11:05
  • 签到天数: 748 天

    [LV.9]以坛为家II

    2034

    主题

    2092

    帖子

    70万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    705612
    发表于 2021-8-31 14:09:11 | 显示全部楼层 |阅读模式

    from:http://blog.csdn.net/chichaodechao/article/details/8294922

        在开发winform程序时,用到多线程,在服务器部署后运行,老是自动关才程序,症状描述如下:

        在Windows Server 2003的操作系统上,运行.Net 2.0或者3.5的应用程序时,会发现没有任何反应,到系统的事件查看器里会发现类似EventType clr20r3 P1....P2...PN的错误提示。

        很可能的原因就是:应用程序出现了异常,而.net没有或者无法捕捉该异常,所以导致出现如下情况:

        1.程序自动关闭。

        2.此时去任务管理器中会看到一个DW20.exe的进程,不久会自动消失

        3.到事件查看器里面会发现类似EventType clr20r3 P1....P2...PN的错误提示。 

        解决方法一:

        config文件中

      <configuration>    

        <runtime>        

          <legacyUnhandledExceptionPolicy enabled="true" />    

        </runtime>

      </configuration>

      这样,主程序遇到未捕获异常不会强制关闭,但为了程序的稳定性与安全性,应该找出抛异常的地方,将其修改

        解决方法二:

        用到UnhandledExceptionEventHandler事件,通过这个事件,我们可以截获未捕获异常,并进行处理

        这个事件的事件参数UnhandledExceptionEventArgs e 有两个属性,一个是ExceptionObject,这个属性返回为截获异常的对象实例。还有一个属性是IsTerminating,这个属性告诉我们这个异常是否会导致应用终止。

        这里需要说明的是,对于.Net1.1  .Net2.0及以上,情况是不一样的,.Net1.1 只有在主线程中的未捕获异常才会终止应用程序,而.Net2.0及以上版本则是始终终止应用程序。

          在主窗体main下,加         

      AppDomain.CurrentDomain.UnhandledException +=new UnhandledExceptionEventHandler(UnhandledExceptionEventHandler);

      并编码UnhandledExceptionEventHandler事件,

            static void UnhandledExceptionEventHandler(object sender, UnhandledExceptionEventArgs e)

            {

                try

                {

                    LogHelper.ErrorLog(e.ExceptionObject.ToString());//LogHelper是写日志的类,这里,可以直接写到文件里

                }

                catch

                {

                }

            }

        运行程序,异常捕获,找到了问题所在,对代码进行改写

    本文结束。

     

    参考:

    http://www.cnblogs.com/eaglet/archive/2009/02/17/1392191.html(重要)

     

     

    http://hi.baidu.com/ymwang/blog/item/07b1b20eab9cdde537d12265.html(重要)

     

    http://www.cnblogs.com/xclw/archive/2009/09/29/1576436.html

     

    http://www.cnblogs.com/dudu/archive/2006/05/07/393446.html

     

    http://hi.baidu.com/xiejl/blog/item/98743c1f161cafc1a686697e.html

     

    http://topic.csdn.net/t/20050304/22/3825910.html 

     

    http://www.yesky.com/258/1653758.shtml 

    http://www.cnblogs.com/cgzwwy/archive/2008/08/31/1280597.html

     

     

     

     

    走向地狱的途中,不小心走了程序员这条路,路上一个个黑心的老板,和暗无天日的加班,我才发现,通往地狱的路径中,我们这行是最短的。

     
     
     
     
     
    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-5-5 20:43 , Processed in 0.067454 second(s), 30 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表