抛出未处理的与CLS兼容/不兼容的异常

本文介绍了一种处理未捕获异常的方法,通过注册AppDomain.UnhandledException事件来捕获程序中未处理的异常,并展示了如何向用户显示错误信息及收集异常详情。

抛出未处理的与CLS兼容/不兼容的异常

'By wgscd 2008/11/3

'http://blog.youkuaiyun.com/wgsnet

''程序里不免会发生也想不到的错误

'当发生那种没有预料到的错误时候,程序在崩溃前给用户显示个抱歉信息,同时收集到导致崩溃的异常信息是很有必要的

就是要处理好UnhandledException

例子:

[STAThread]
  static void Main()
  {

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

   Application.Run(new Form1());
  }


  static void wgscdErrHandler(Object sender, UnhandledExceptionEventArgs e)
  {

   //此字符串用来显示或记录日志信息

   String info;
   //初始化它
   Exception ex=e.ExceptionObject as Exception ;

   if (ex!=null)
   {

    //抛出未处理的与CLS兼容的异常
    info=ex.ToString ();

                //向用户显示抱歉
               MessageBox.Show("抱歉。。。。。。。");
                //MessageBox.Show(ex.Message);
   }
   else
   {

    //抛出未处理的与CLS兼容的异常


    info=String.Format("与CLS兼容的异常: Type={0},String={1}",e.ExceptionObject.GetType(),e.ExceptionObject.ToString());

   }
  
#if DEBUG

   //对调试构建应用程序时,启动调试器。可明白发生的事情并修正它

   if (!e.IsTerminating)
   {
 
    Debugger.Launch();
   }
   else
   {  
    Debugger.Launch (); 
   }

//#else

//显示或记录异常,以便用户将其返回报告给你

   if (!e.IsTerminating)
   {
   // do some thing
   
   }
   else
   {//发生在托管线程中的未处理的异常

    //CLR将杀死尺此应用程序,下面代码将显示和记录异常
    String msg=String.Format("{0}遇到了问题需要关闭,为此给您到来的不便我们深感抱歉。/n/n" +
     "请告诉{1}这个问题。/n我们已经建立了这个错误的报告,你可以发送给我们以便帮助我们改善,"
     +"这个报告将看作是隐私和匿名的。/n/n 你希望现在发送这个错误报告吗?","这个应用程序","奔腾娱乐wgscd");
    if ( MessageBox.Show(msg,"应用程序名",MessageBoxButtons.YesNo)==DialogResult.Yes)
    {
  // 接收或处理报告

   MessageBox.Show(info,"错误报告");
    }
   }

#endif
  }

  private void button1_Click(object sender, System.EventArgs e) //测试
  {
     
    int a,b;
 a=2;
 b=0;
    int d=a/b;
            
  }

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值