Java 定位非法状态异常错误
我对java比较陌生,并且开发了一个使用多个正则表达式从网页中查找特定值的程序。但是,有时我会遇到这样一个错误:Java 定位非法状态异常错误,java,regex,eclipse,illegalstateexception,Java,Regex,Eclipse,Illegalstateexception,我对java比较陌生,并且开发了一个使用多个正则表达式从网页中查找特定值的程序。但是,有时我会遇到这样一个错误: java.lang.IllegalStateException: No match found at java.util.regex.Matcher.group(Matcher.java:468) at java.util.regex.Matcher.group(Matcher.java:428) 我的代码包含很多正则表达式,我想知道在Eclips
java.lang.IllegalStateException: No match found
at java.util.regex.Matcher.group(Matcher.java:468)
at java.util.regex.Matcher.group(Matcher.java:428)
我的代码包含很多正则表达式,我想知道在Eclipse中是否有办法找到无法找到的模式。有没有办法找到产生错误的代码行?提前感谢。在从matcher获取组之前请进行检查,否则将导致以下异常:
java.lang.IllegalStateException: No match found
示例代码
if(matcher.find()){ // you can use while loop as well if there is more matches
matcher.group(1);
}
什么方法抛出 如果尚未尝试匹配,或者如果先前的匹配操作失败,则为IllegalStateException 哪些国家: 尝试查找与模式匹配的输入序列的下一个子序列 如果匹配成功,则可以通过start、end和group方法获得更多信息
在使用
group
方法之前,是否在Matcher实例上调用find
或matches
?是的,我实际上能够解决问题。问题是我花了很长时间才解决,因为我在代码中使用了多个模式、匹配器、查找和组。我只是想知道Eclipse是否特别说明了错误在我的代码中发生的位置。通过这种方式,我不会花太长时间在将来解决这个问题。在java.util.regex.Matcher.group(Matcher.java:428)的下面的某个地方,你应该在你的.package.name.YourClass.method(YourClassFile.java:XXX)中有类似的
whereXXX
是抛出错误的文件YourClassFile.java
中的行号。此行应包含yourMatcher.group()
其中yourMatcher
未调用find
或matches
方法,或者实际上未找到任何与regex匹配的方法。感谢您的回复。我一定会那样做的。但是,eclipse是否提供了任何信息让我知道错误发生在哪里?当我第一次看到这个错误时,我认为这意味着无法找到的正则表达式位于第468行。该信息是否存在于任何地方,或者使用检查是常见的做法?沿着堆栈跟踪,它将告诉您生成此异常的确切位置。在调用group()
之前始终进行检查,因为不可能存在任何匹配。这就像在Java中为IO调用next()
而不调用hasNext()
一样。哇,谢谢你的帮助。Idk我是如何一直错过堆栈跟踪中给出的位置的,一定是工作太快了,太不耐烦了。不过,我还是很高兴我要求了解支票。非常感谢。