zoukankan      html  css  js  c++  java
  • Java中Try Catch慢吗?

    代码和结果如下:

    public class TryCatchTest {
        public static void main(String[] args) {
            long start = System.nanoTime();
            int a = 0;
            for (int i = 0; i < 1000000; i++) {
                try {
                    a=1/0;
    //                a=1/1;
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            System.out.println((System.nanoTime() - start));
            /**
             * 异常打印22,200,801,025纳秒 即22秒
             * 异常不打印283,239,909纳秒  即283毫秒
             * 无异常3,966,408纳秒        即4毫秒
             * 1毫秒=1,000,000纳秒
             */
        }
    }

    项目中,有的同事喜欢抛出异常,再统一收集异常并转换为状态码再返回。

    如果是一般的程序,对性能没什么要求,这点性能损耗也不是那么不能接受,反而这样做还显得耦合性低,比较优雅。

    但是对性能要求非常苛刻的场景,特别是存在被人刻意伪造异常进行攻击的风险,不建议以捕捉异常的形式来返回业务上的错误。

    慢的原因:异常发生时,需要收集栈跟踪,放在对象e中。不管你是否打印这个栈跟踪,都会做。这个动作相对来说比较耗时。

  • 相关阅读:
    Java 对象初始化
    Java 栈和堆
    值得细品
    磁盘的分区、格式化与挂载
    VirtualBox预存空间不足
    做个备忘
    SQL查数据库有哪些触发器,存储过程...
    SQL 中 CASE
    FMX的Style中的Effects的注意问题
    Python图像处理库(2)
  • 原文地址:https://www.cnblogs.com/flying607/p/12857611.html
Copyright © 2011-2022 走看看