zoukankan      html  css  js  c++  java
  • 编写高质量代码改善C#程序的157个建议——建议64:为循环增加Tester-Doer模式而不是将try-catch置于循环内

    建议64:为循环增加Tester-Doer模式而不是将try-catch置于循环内

     如果需要在循环中引发异常,你需要特别注意,应为抛出异常是一个相当影响性能的过程。应该尽量在循环当中对异常发生的一些条件进行判断,然后根据条件进行处理。

    做个测试:

                Stopwatch watch = Stopwatch.StartNew();
                int x = 0;
                for (int i = 0; i < 10000; i++)
                {
                    try
                    {
                        int j = i / x;
                    }
                    catch
                    {
                    }
                }
                Console.WriteLine(watch.ElapsedMilliseconds);
    
                watch = Stopwatch.StartNew();
                for (int i = 0; i < 10000; i++)
                {
                    if (x == 0)
                    {
                        continue;
                    }
                    int j = i / x;
                }
                Console.WriteLine(watch.ElapsedMilliseconds);
                Console.ReadKey();

    输出为:

    796

    0

    以上代码中,我们预见了代码肯能会发生DivideByZeroException异常,于是,调正策略,对异常发生的条件进行了特殊处理:Continue让效率得到了极大的提升。

    转自:《编写高质量代码改善C#程序的157个建议》陆敏技

  • 相关阅读:
    封装
    面向对象的思想
    Arrays工具类
    二分查找
    选择排序
    冒泡排序
    对象数组
    二维数组
    一维数组
    循环语句注意事项
  • 原文地址:https://www.cnblogs.com/jesselzj/p/4737859.html
Copyright © 2011-2022 走看看