有多少更好的方法:

 if (condition) {
  try {
   //something
  } catch(SomeEx ex) {}
 }

而不是这样:
 try {
   if (condition) {
     //something
   }
 } catch(SomeEx ex) {}

当我输入try块时,JVM实际上会做什么?

编辑:
我不想知道在第二个示例中总是要尝试...请回答问题。

最佳答案

在运行时明智地执行,只要没有异常(exception),尝试不会花费您任何费用。只有在发生异常时才花费运行时间。在这种情况下,进行if评估要慢得多。

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

09-11 19:29