请教关于异常处理:第一次捕捉异常很慢,大约需10秒钟,想死机了一样,为什么?
我只是做了一个最简单的测试代码。如下:
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




