CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

请教关于异常处理:第一次捕捉异常很慢,大约需10秒钟,想死机了一样,为什么?

楼主wangxl430(卡拉)2005-02-03 00:47:41 在 .NET技术 / C# 提问

我只是做了一个最简单的测试代码。如下:  
  public   class   MyExp   :   ApplicationException  
  {  
      public   MyExp()    
      {  
      }  
  }  
  public   class   Form1   :   System.Windows.Forms.Form  
  {  
      private   int   _Test;  
      public   int   Test  
      {  
        set    
          {  
              if   (value>=100)   _Test=value;  
  else   throw   new   MyExp2();  
          }  
        get   {   return   _Test;}  
        }  
  private   void   Button1_Click(object   sender,   System.EventArgs   e)  
  {  
    try    
    {  
        this.Test=Convert.ToInt16(this.textEdit6.Text);  
      }  
    catch   (MyExp2   Exp)  
    {  
      MessageBox.Show("抓住啦!");  
    }  
  }  
  }  
   
  在执行的时候,第一次点击button,大约10秒钟才出现对话框,第二次开始就很快了。这么简单的代码  
  需要那么久吗?是不是代码有问题?  
  无论是catch   (MyExp2   Exp)   还是   只写catch捕捉所有异常都是那么长时间。  
  这是怎么回事啊?  
  谢谢! 问题点数:50、回复次数:8Top

1 楼wangxl430(卡拉)回复于 2005-02-03 00:57:34 得分 0

已经明白了,前5名分数分摊。呵呵。Top

2 楼KissXYL(挚爱凝忆)回复于 2005-02-03 01:11:16 得分 9

明白了?那就自己分析一下,大家学习学习,我也遇到,但不明白Top

3 楼wangxl430(卡拉)回复于 2005-02-03 01:26:18 得分 0

在debug模式下,是这样的。使用“不调试”就不慢了。  
   
  以下内容引用自  
  http://community.csdn.net/Expert/topic/3742/3742390.xml?temp=.5770838  
   
  Because   .NET   use   very   late   binding....  
   
  Classes   that   are   never   used   are   also   never   loaded   into   memory.   But   when   they   finally   needed   then   CLR   needs   time   to   load   and   initialize   them.   In   case   of   unhandled   exception   CLR   needs   additional   time   to   collect   information   for   use   in   debbuger   (and   to   show   up   a   message).  
   
  But   in   your   case   I   will   rather   blame   JIT   compiler   for   that   delay...  
  (haven't   looked   at   your   project   too..     )    
   
  You   can   try   to   sign   assembly   and   use   ngen.exe   (and   gacutil)-   i   think   its   worth   try.  
   
   
  这是国外的高手KRZEMO回答的!  
   
   
  直接运行  
  bin\Debug\cs_TextBox.exe    
  obj\Debug\cs_TextBox.exe  
  速度非常快。  
   
  看了上面的话,我就明白了。  
   
  Top

4 楼xwdd129(高手就是:不出手)回复于 2005-02-03 08:30:27 得分 9

mark   upTop

5 楼xiaohaige(无聊聊)回复于 2005-02-03 08:33:21 得分 9

学习Top

6 楼yangxd_yi(杨一)回复于 2005-02-03 09:11:58 得分 9

说点体会大家共享,有一次我要判断一个字符串是否是正整数  
    我首先是想到用  
                  private   bool     Judge(string   Str)  
                      {  
                            try  
                                {  
                                        if(Convert.ToInt16(Str)>0)  
                                          {  
                                                  return   true;      
                                          }  
                                          else  
                                          {  
                                                  return   false;  
                                          }      
                                }  
                            catch  
                                {  
                                      return   false;    
                                }  
                                   
                      }            
  当然我也想到用分析字符串的方法,分别于0--9的ACSCII码进行比较,不过这相对有点麻烦,可是有一天偶然看到有人对两种方法进行了纳米级的比较,大家猜猜看两种算法的比较结果如何....  
                    结果是第二种的执行效率比捕捉异常竟快400倍左右...  
                      大家想想是一个什么概念,不过我想对于适时性要求不高的地方我们还是可以用第一中方法的,要是对于对系统的适时性要求高的地方,建议大家尽量自己用第二种写方法判断  
                                    一点感想,共同进步.....    
     
  Top

7 楼singleflower(诗凡(愿父亲安息))回复于 2005-02-03 09:17:57 得分 9

up  
  Top

8 楼LoveCherry(论成败,人生豪迈;大不了,重头再来!^_^)回复于 2005-02-03 09:21:20 得分 5

第一次异常很慢  
  判断类型可以考虑使用正则Top

相关问题

  • Delphi的异常的捕捉
  • 如何捕捉异常?
  • 怎样捕捉异常?
  • 如何捕捉异常
  • 异常捕捉问题(C#)
  • CBC里的异常捕捉?
  • 怎样捕捉异常
  • 如何捕捉ADO异常?
  • C++的异常捕捉
  • 异常捕捉相关

关键词

  • .net
  • 代码
  • debug
  • 异常
  • myexp
  • 捕捉
  • 比较
  • 方法
  • 明白
  • catch

得分解答快速导航

  • 帖主:wangxl430
  • KissXYL
  • xwdd129
  • xiaohaige
  • yangxd_yi
  • singleflower
  • LoveCherry

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo