Java JIT 编译器是否在没有副作用的情况下移除了方法调用?

Does Java JIT compiler remove method's call without side effects?

我有一个简单的方法来检查输入字符串是否有效的 xpath

private boolean isXpath(String value) {
    boolean isXpath = true;
    try {
        XPath xpath = XPathFactory.newInstance().newXPath();
        xpath.compile(value);
    } catch (XPathExpressionException e) {
        isXpath = false;
    }
    return isXpath;
}

我能确定 JIT 编译器不会删除 try 块内的代码吗,因为它没有副作用?或者它有(可能的例外)?

Dead Code Eliminatino 不仅仅是关于副作用,还关于使用计算结果。由于你的方法 returns isXpath 不执行 try 块就无法导出,因此 JIT 编译器不可能消除它。