try-catch影响性能问题

allen_limi 发布于 2012/02/16 17:14
阅读 3K+
收藏 2

最近在优化程序,在此请教一个问题:

try{
    System.out.println("a");
}catch(Exception e){
    System.out.println("b");
}

网上查了很多,自己也测试了多次,网上说的最多的是try-catch影响性能,主要是创建异常的性能开销比较大

如果没有异常时,就不用创建异常,那此处的try-catch不就一点都不影响性能了?

加try-catch的优点在此不阐述了,就是想确定下,如果没有异常产生,try-catch应该就不消耗性能吧,我是新手,大家各抒己见哦

贴一个带测试数据的连接:http://www.blogjava.net/stone2083/archive/2010/07/09/325649.html

加载中
1
六只
六只
小弟不才,之前翻译过异常处理的文章: http://congmo.github.com/blog/2012/02/14/1-exception/
1
无心睡眠
无心睡眠
异常最大的开销是创建异常时需要回溯栈信息,如果没有异常的时候几乎不会影响性能
0
红薯
红薯
看很多代码,最怕很多人的异常处理方式,全部是
}catch(Exception e){
    e.printStackTrace();
}

你身边肯定也有很多这种人吧:)

allen_limi
allen_limi
红薯老大,我这里只是暂时用Exception代替描述下问题哦,嘿嘿,我从来不直接给一个Exception,都是给可能会发生的异常哦
景愿
景愿
oh no
0
canghailan
canghailan
public void noTry() {
    System.out.println("a");
}

字节码:

0 getstatic #2 <java/lang/System/out Ljava/io/PrintStream;>
3 ldc #3 <a>
5 invokevirtual #4 <java/io/PrintStream/println(Ljava/lang/String;)V>
8 return

public void tryFinally() {
    try {
        System.out.println("a");
    } finally {
    }
}

字节码:

 0 getstatic #2 <java/lang/System/out Ljava/io/PrintStream;>
 3 ldc #3 <a>
 5 invokevirtual #4 <java/io/PrintStream/println(Ljava/lang/String;)V>
 8 goto 14 (+6)
11 astore_1
12 aload_1
13 athrow
14 return

public void tryCatchFinally() {
    try {
        System.out.println("a");
    } catch (Exception e) {
    } finally {
    }
}

字节码:

 0 getstatic #2 <java/lang/System/out Ljava/io/PrintStream;>
 3 ldc #3 <a>
 5 invokevirtual #4 <java/io/PrintStream/println(Ljava/lang/String;)V>
 8 goto 18 (+10)
11 astore_1
12 goto 18 (+6)
15 astore_2
16 aload_2
17 athrow
18 return

0
Sky__
Sky__

红薯大哥,你是怎么用的?

 

0
拉登他哥
拉登他哥
异常用处好几多....
0
IdleMan
IdleMan
我怎么觉得为了保持一个完整的“事物”才需要用它呢,否则我宁愿用一个全局或者公用
0
IdleMan
IdleMan
的页面或界面告诉用户出错了
0
游客
游客
这里乱用了吧。需要的时候才try
allen_limi
allen_limi
这里只是举个例子,用来讨论try-catch影响性能的问题,不能只研究举例子的这段代码是否有问题哦
返回顶部
顶部