try catch块的成本是多少?

Smo*_*lda 7 java performance try-catch

好多了:

 if (condition) {
  try {
   //something
  } catch(SomeEx ex) {}
 }
Run Code Online (Sandbox Code Playgroud)

而不是这个:

 try {
   if (condition) {
     //something
   }
 } catch(SomeEx ex) {}
Run Code Online (Sandbox Code Playgroud)

当我进入try块时,JVM实际上做了什么?

编辑:我不想知道在第二个例子总是进去尝试...请回答问题.

Fra*_*kPl 9

在运行时明智地执行,只要没有异常,尝试不会花费任何成本.一旦发生异常,它只会花费运行时间.在那种情况下,if评估要慢得多.

在JVM规范中,您会看到在执行路径上没有生成额外的字节代码:http: //docs.oracle.com/javase/specs/jvms/se7/html/jvms-3.html#jvms-3.12