Java JVM优化是否应用于不';我没有尝试捕获错误抛出异常?

Java JVM优化是否应用于不';我没有尝试捕获错误抛出异常?,java,performance,exception,optimization,Java,Performance,Exception,Optimization,有一个问题 接下来的问题是“应用于没有try-catch bug的函数的JVM优化是否会引发异常?”。例如,所有方法都抛出它们的异常,主方法有一个try-catch来包围所有方法和代码。在这种情况下,根据“有效Java”: 将代码放在try-catch块中会抑制现代JVM实现可能执行的某些优化 JVM不会对main方法中的代码进行一些优化。问题是:JVM是否优化了抛出异常的方法中的代码?如果您指的是抛出子句,那么肯定不是。请注意,所有方法都有一个“不可见的抛出RuntimeException,E

有一个问题

接下来的问题是“应用于没有try-catch bug的函数的JVM优化是否会引发异常?”。例如,所有方法都抛出它们的异常,主方法有一个try-catch来包围所有方法和代码。在这种情况下,根据“有效Java”:

将代码放在try-catch块中会抑制现代JVM实现可能执行的某些优化


JVM不会对main方法中的代码进行一些优化。问题是:JVM是否优化了抛出异常的方法中的代码?

如果您指的是
抛出
子句,那么肯定不是。请注意,所有方法都有一个“不可见的
抛出RuntimeException,Error
子句”,即它们可能抛出一些东西

还要注意的是,在JVM级别上没有什么比检查异常更好的了,它是字节码中不存在的纯Java源代码特性(还有许多其他语言在JVM上运行,没有检查异常;AFAIK Java是唯一的实验)

实际上抛出异常代价很高,但基本上任何方法都可以抛出一些异常。理论上,即使是空方法也会抛出
堆栈溢出错误。只有当异常真正发生时,它才会变得昂贵

对于try-catch块,当实际抛出异常时,在某个地方只有一个条目可以被查询,否则就不会被使用。它可能会阻止一些优化,这将使它不可能使用这些信息,或不;JVM变得越来越好


无论如何,添加一个throws子句对性能没有影响,而且在大多数情况下这是正确的。

您能详细说明一下您的确切意思吗?您是否在询问不使用
try-catch
的方法的JVM优化是否会引发异常?或者你想找出使用
try catch
优化方法与声明
抛出异常的方法之间的区别吗?我只是稍微解释一下这个问题。你在说什么bug?这不是bug。这是从性能的角度来看的。“有效的Java”说try-catch块将阻止某些类型的优化。我的问题是抛出异常是否也会阻止这种优化?