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比较陌生,并且开发了一个使用多个正则表达式从网页中查找特定值的程序。但是,有时我会遇到这样一个错误:

 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)中有类似的
where
XXX
是抛出错误的文件
YourClassFile.java
中的行号。此行应包含
yourMatcher.group()
其中
yourMatcher
未调用
find
matches
方法,或者实际上未找到任何与regex匹配的方法。感谢您的回复。我一定会那样做的。但是,eclipse是否提供了任何信息让我知道错误发生在哪里?当我第一次看到这个错误时,我认为这意味着无法找到的正则表达式位于第468行。该信息是否存在于任何地方,或者使用检查是常见的做法?沿着堆栈跟踪,它将告诉您生成此异常的确切位置。在调用
group()
之前始终进行检查,因为不可能存在任何匹配。这就像在Java中为IO调用
next()
而不调用
hasNext()
一样。哇,谢谢你的帮助。Idk我是如何一直错过堆栈跟踪中给出的位置的,一定是工作太快了,太不耐烦了。不过,我还是很高兴我要求了解支票。非常感谢。