建议64:为循环增加Tester-Doer模式而不是将try-catch置于循环内 如果需要在循环中引发异常,你需要特别注意,应为抛出异常是一个相当影响性能的过程。应该尽量在循环当中对异常发生的一
来源:互联网 发布:唐璜歌剧经典曲目知乎 编辑:程序博客网 时间:2024/06/05 14:39
建议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个建议》陆敏技
0 0
- 建议64:为循环增加Tester-Doer模式而不是将try-catch置于循环内 如果需要在循环中引发异常,你需要特别注意,应为抛出异常是一个相当影响性能的过程。应该尽量在循环当中对异常发生的一
- Java异常处理--将try/catch区段置于循环之外
- Java异常处理--将try/catch区段置于循环之外
- try catch放在循环内还是放在循环外的性能对比.
- 关于处理try-catch循环一次异常,次次异常的一个例子
- 私有继承对try catch异常抛出的影响
- Randomize在循环中应用需要注意的
- ORACLE存储过程如何在LOOP循环中处理异常
- Scanner在异常处理中死循环
- oracle异常机制(在循环中)
- for 之 循环引发异常
- Java中关于try{}catch{}抛出异常的一个例子
- java try catch 吃掉异常与跑出异常的区别,以及在项目中是否改抛出异常的理解
- try ,finally都抛出异常如何处理.如果try中抛出了异常,在控制权转移到调用栈上一层代码之前, finally 语句块也会执行,如果finally抛出异常,try语句快抛出的那个异常就
- try catch放在循环内外的区别
- 关于Scanner类写在循环外面抛出异常后会无限循环的问题
- 性能优化1: 能在一个循环内处理的事情,不要分成多个循环
- 将需要人为触发的事件放在定时器或者循环中,程序有可能产生Bug
- C#的第11节课的主要内容
- VTK-Wight 之 vtkContourWidget简介
- JavaScript 资源大全中文版
- C++ 之结构体对齐
- C语言实现任意进制的转换,主要注意代码的小技巧
- 建议64:为循环增加Tester-Doer模式而不是将try-catch置于循环内 如果需要在循环中引发异常,你需要特别注意,应为抛出异常是一个相当影响性能的过程。应该尽量在循环当中对异常发生的一
- 表的join操作:left、right、outer、inner
- 自定义View绘制圆,可拖动
- C# 多线程编程以及常用方法
- C语言-数据类型在LR中的应用
- jdk API实现日志功能
- highcharts 去掉版权|去掉水印(右下角)
- Java中返回的对象无法再jsp页面中循环遍历到标签上
- Yara规则编写