C# 屏蔽由于崩溃弹出的windows异常弹框_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > C# 屏蔽由于崩溃弹出的windows异常弹框

C# 屏蔽由于崩溃弹出的windows异常弹框

 2017/8/15 17:31:25  孤风魅影  程序员俱乐部  我要评论(0)
  • 摘要:windows应用程序(包括控制台)在运行时如果出现了未处理的异常会出项windows的异常提示框这个提示框在平时并没有什么影响。但是当我们使用启动的是一个服务器程序时,我们的要求应该是尽可能快的重启应用。但是由于这个提示框导致我们的第三方守护程序并不知道应用已经崩溃退出,导致我们无法及时处理。所以,我们应该在程序启动时再做一个处理,即添加未处理异常的事件C#:AppDomain.CurrentDomain.UnhandledException解释:此事件提供通知未捕获的异常
  • 标签:Windows C# 异常
  windows应用程序(包括控制台)在运行时如果出现了未处理的异常会出项windows的异常提示框

 

       这个提示框在平时并没有什么影响。但是当我们使用启动的是一个服务器程序时,我们的要求应该是尽可能快的重启应用。 但是由于这个提示框导致我们的第三方守护程序并不知道应用已经崩溃退出,导致我们无法及时处理。            所以,我们应该在程序启动时再做一个处理,即添加未处理异常的事件                   C#:   AppDomain.CurrentDomain.UnhandledException          解释: 此事件提供通知未捕获的异常。 它允许应用程序来记录有关异常的信息,系统默认处理程序将异常报告给用户和终止应用程序之前。 如果提供了有关状态的应用程序的足够信息,可以采取其他措施-例如保存更高版本的恢复的程序数据。 建议小心,因为不处理异常时,可能会损坏程序数据。                      在该事件中我们可以从容的捕获异常、记录然后退出重启。             示例代码:  
class Program
       {
              static int m_count = 0;
              static void Main(string[] args)
              {
                     AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
 
                     while(true)
                     {
                           Func1();
                           Thread.Sleep(10);
                     }
              }
 
              private static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
              {
                     Console.WriteLine("有未经处理的异常,程序即将退出!");
                     Thread.Sleep(5000);
                     Environment.Exit(-1);
              }
 
              static void Func1()
              {
                     m_count++;
 
                     if(m_count > 100)
                     {
                           throw new Exception();
                     }
              }
       }

 

            结果:           

 

发表评论
用户名: 匿名