bsp; Test2(2, 4);
l2 = DateTime.Now.Ticks;
s1 = l2 - l1;
Console.WriteLine("time spent:" + s1);
l3 = DateTime.Now.Ticks;
for (int i = 0; i < times; i++)
Test1(2, 4);
l4 = DateTime.Now.Ticks;
s2 = l4 - l3;
Console.WriteLine("time spent:" + s2);
Console.WriteLine("difference:" + (s2 - s1) + ", rate:" + (float)(s2 - s1) / s1 / times);
}
}
static int Test1(int a, int b)
{
try
{
for (int i = 0; i < 100; i++) ; // 模拟长时操纵
if (a > b)
return a;
return b;
}
catch
{
return -1;
}
}
static int Test2(int a, int b)
{
for (int i = 0; i < 100; i++) ; // 模拟长时操纵
if (a > b)
return a;
return b;
}
运行后可以看到代码的差异,通常在0.0001%的差别以内。
第二点,如果发生异常,那么引发或处理异常时,将使用大量的系统资源和执行时间。引发异常只是为了处理确实异常的情况,而不是为了处理可预知的事件或流控制。例如,如果方法参数无效,而应用程序需要使用有效的参数调用方法,则可以引发异常。无效的方法参数意味着出现了异常情况。相反,用户偶尔会输入无效数据,这是可以预见的,因此如果用户输入无效,则不要引发异常。在这种情况下,请提供重试机制以便用户输入有效输入。
我们经常需要将一个字符串转换为int,比如将Request.QueryString["id"]这样的字符串转换为int,在asp.net 1.x时代,我们常使用下列方式
try
{
int id = Int32.Parse("123");
}
catch(){}
这样的后果是如果出现转换异常,你将不得不牺牲大量的系统资源来处理异常,即使你没有编写任何异常处理代码。
当然你也可以编写大量的代码来检测和转换字符串来替代try/catch方式,而从a