博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# Try/Catch性能测试
阅读量:4288 次
发布时间:2019-05-27

本文共 1935 字,大约阅读时间需要 6 分钟。

一、Try/Catch说明

Try-catch 语句包含一个后接一个或多个 catch 子句的 try 块,这些子句指定不同异常的处理程序。

引发异常时,公共语言运行时 (CLR) 查找处理此异常的 catch 语句。如果当前正在执行的方法不包含此类 catch 块,则 CLR 查看调用了当前方法的方法,并以此类推遍历调用堆栈。如果未找到任何 catch 块,则 CLR 向用户显示一条未处理的异常消息,并停止执行程序。
try 块包含可能导致异常的受保护的代码。将执行此块,直至引发异常或其成功完成。

特别说明:

1. 在编写代码过程中,加try/catch块,和不加try/catch快,没有异常的情况下效率是相同的,但是在有异常的时候效率会相当低。

2.对于异常的处理,能自己解决的尽量自己处理,对于处理不了的再用try/catch

3.特别需要考虑的是在有大量循环的语句中,有过多的异常非常影响性能。

二、简单性能测试

以int类型为例

int start = Environment.TickCount;int temp = 0;for (int i = 0; i < 100; i++){    try    {        temp += i;        throw new Exception("抛出异常");    }    catch (Exception ex)    {    }}int end = Environment.TickCount;Console.WriteLine("执行时间:{0}毫秒,{1}秒", (end - start), (end - start) / 1000);

执行结果:

三、在数据类型转换中Parse()和TryParse()的性能对比

int start = Environment.TickCount;string temp = "a15";for (int i = 0; i < 100; i++){    try    {        // int reuslt = int.Parse(temp);        int result = 0;        int.TryParse(temp, out result);    }    catch (Exception ex)    {    }}int end = Environment.TickCount;Console.WriteLine("执行时间:{0}毫秒,{1}秒", (end - start), (end - start) / 1000);
显示结果:

特别说明:

1.在没有异常抛出的情况下,int.Parse()和int.TryParse() 几乎一样

1.在大量循环中进行数据类型转换,如果有很多失败的转换,int.TryPase()的性能优势就提现出来了。

四、空指针异常,性能测试

1.使用catch捕获异常

int start = Environment.TickCount;for (int i = 0; i < 100; i++){    try    {        Student stu = Student.GetIntance();        stu.ID = i;        stu.Name = i.ToString();    }    catch (NullReferenceException ex) //捕获空指针异常    {    }}int end = Environment.TickCount;Console.WriteLine("执行时间:{0}毫秒,{1}秒", (end - start), (end - start) / 1000);
2.写代码时,主动避开可处理的异常

//手动写代码过滤异常Student stu = Student.GetIntance();if (stu != null){    stu.ID = i;    stu.Name = i.ToString();}

public class Student{    public int ID { get; set; }    public string Name { get; set; }    public static Student GetIntance()    {        return null;    }}

特别说明:

1.在使用引用类型的变量的时候,在不确定变量一定为不空的情况下,尽量要自己判断后在使用

2.特别注意是在大量循环处理的过程中。

更多:

你可能感兴趣的文章
【解决使用scp命令时不必输入密码的程序】
查看>>
【无敌海景清醒电脑xp主题】
查看>>
【性感玫瑰&热门Win7主题】
查看>>
【等爱的女孩win7热门主题】
查看>>
【php:根据中文裁减字符串函数方法】
查看>>
【重装xp系统必然要知道的五个设置】
查看>>
【林间美女XP热门主题】
查看>>
【4招搞定注册表键值快速定位】
查看>>
【唯美童话森林xp主题】
查看>>
【Win7系统的电源设置功能】
查看>>
【了解Linux系统中U盘挂载或卸载的知识】
查看>>
【Tenda腾达路由器限速图解教程】
查看>>
【梦幻童年win7热门主题】
查看>>
【巧破网络限制 重享网络自由】
查看>>
【win7小技巧让你的声音设置随个性】
查看>>
【AngelaBaby杨颖性感公主XP主题】
查看>>
【解决不能在Win8中添加功能的方法】
查看>>
【解决Win8系统下无法彻底关机的问题】
查看>>
【清纯可爱女孩win7主题】
查看>>
【一步一步教会您升级到win7旗舰版】
查看>>