没有堆栈溢出的 Java 正则表达式解析器



使用 java.util.regex 处理正则表达式会导致大字符串和复杂正则表达式(尤其是包含 |)的堆栈溢出。

有没有办法在 Java 中更防御地处理正则表达式,例如

  • 具有正则表达式的非递归模式
  • 为这些正则表达式抛出可捕获的异常(而不是java.lang.Stackoverflow错误),

或任何其他不会杀死我的程序或使其处于不可恢复状态的机制?

可以像任何异常一样捕获和处理StackOverflowError。错误表示您通常不应该发现的严重问题,但在这种情况下,您知道它是什么并且需要处理它。只需捕获它并处理这种情况(或重新引发自定义异常)。

您可能还需要考虑使用 -Xss 命令行标志来增加堆栈大小。

最新更新