Java 主线程中出现异常,Netbeans中没有错误
在我的程序中进行更改后,此错误随机开始。Netbeans没有显示任何错误 我在Netbeans 8.2中遇到过随机错误,通常是通过删除缓存来解决的,但是我删除了缓存,重新启动了Netbeans,仍然得到相同的错误 我进行了一次清洁和修造,但没有结果 程序运行了。我仍然可以编译它并在另一台机器上运行,但Netbeans一直给我这个错误:Java 主线程中出现异常,Netbeans中没有错误,java,netbeans,Java,Netbeans,在我的程序中进行更改后,此错误随机开始。Netbeans没有显示任何错误 我在Netbeans 8.2中遇到过随机错误,通常是通过删除缓存来解决的,但是我删除了缓存,重新启动了Netbeans,仍然得到相同的错误 我进行了一次清洁和修造,但没有结果 程序运行了。我仍然可以编译它并在另一台机器上运行,但Netbeans一直给我这个错误: Exception in thread "main" java.lang.NullPointerException at rss.RSSFeedParser.ma
Exception in thread "main" java.lang.NullPointerException
at rss.RSSFeedParser.main(RSSFeedParser.java:157)
....\NetBeans\Cache\8.2\executor-snippets \run.xml:53: Java returned: 1
BUILD FAILED (total time: 3 seconds)
run.xml第53行
<java classpath="${classpath-translated}" classname="${classname}" dir="${work.dir}" jvm="${platform.java}" fork="true" failonerror="${java.failonerror}">
更新:
我在试捕时捕捉到一个数字形式的异常。Netbeans在此之前没有抛出任何错误,直到突然之间。我把它改成了例外。该程序运行良好,但Netbeans建议将其改回NumberFormatException。这里有什么?我认为只要捕获了所需的异常,就不会有问题
请参阅附加的屏幕截图 您发布的stacktrace显示RSSFeedParser.java文件的第157行有错误。您的IDE没有将这一行突出显示为错误,因为您的代码没有任何语法或编译时问题
String[] split = msEndpoint.getTcpPorts().split(",");
该代码的有效性在于它将被编译,因为String对象的splitString方法返回字符串数组等
实际出现的问题是msEndpoint为null,或者msEndpoint.getTcpPorts返回null,因此java最终尝试调用null上的方法,然后抛出NullPointerException。更多关于这个
您的IDE可能无法在程序运行之前找出程序运行时可能抛出的所有错误。但它可以显示编译时错误。更多关于差异的信息
请尝试打印msEndpoint的值,然后打印字符串[]split=..上方的msEndpoint.gettcport的值。。。。。行:
查看其中哪一个的值为null。它清楚地表明RSSFeedParser中存在问题。java:157,它意味着检查RSSFeedParser.java类的第157行。请参阅屏幕截图。该程序中没有错误。请尝试了解编译错误和异常之间的关系。异常发生在运行时,这意味着当您运行程序时。在该行中,msEndPoint或msEndPoint.getTCPPorts均不为null。运行时,打印这些值。您将获得解决方案。当您更改catch块以捕获异常时,您将捕获作为异常实例的任何错误,其中包括NullPointerException您将获得的实际错误。当您刚刚捕获NumberFormatException时,NullPointerException将被抛出到try块中的某个位置,而catch块将不会捕获它,因为catch只应捕获NumberFormatException。
if(...) {
try {
System.out.println(msEndpoint);
System.out.println(msEndpoint.getTcpPorts());
String[] split = msEndpoint.getTcpPorts.split(",");
...
}
}