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

时间:2016-06-07 08:07:43

标签: java regex exception

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

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

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

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

1 个答案:

答案 0 :(得分:0)

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

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