主线程中的异常,Netbeans中没有错误

时间:2019-05-14 18:32:40

标签: java netbeans

enter image description here在对我的程序进行更改后,此错误随机开始。 Netbeans不会显示任何错误。

我在Netbeans 8.2中遇到随机错误,在此之前通常可以通过删除缓存来解决,但我已经删除了缓存,重新启动了Netbeans,但仍然遇到相同的错误。

我进行了一次清理,但仍无济于事。

程序运行了。我仍然可以编译它并在单独的计算机上运行它,但是Netbeans不断给我这个错误:

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}">

更新: 我在尝试捕获时捕获到“ NumberFormatException”。 Netbeans之前对此没有抛出任何错误,直到突然之间。我将其更改为“异常”。该程序运行正常,但是我有Netbeans的建议将其更改回“ NumberFormatException”。这里有什么?我认为只要捕获到必需的例外,就不会有问题。

请参阅所附的屏幕截图。 The problem The Solution

1 个答案:

答案 0 :(得分:0)

您发布的堆栈跟踪显示157文件的第RSSFeedParser.java行有错误。您的IDE不会将此行突出显示为错误的行,因为您的代码没有任何语法编译时问题。

String[] split = msEndpoint.getTcpPorts().split(",");

由于split(String)对象的String方法将返回String个数组,依此类推,因此该代码将被编译,这是“有效的”。

实际上出了什么问题是msEndpointnull,或者msEndpoint.getTcpPorts()返回了null,所以java最终试图在{{1}上调用方法},然后抛出null。 (有关here的更多信息。)

您的IDE可能无法在程序运行之前弄清楚程序运行时可能引发的所有错误。但是它可以显示编译时错误。 (有关差异here的更多信息。)

尝试打印出NullPointerException的值,然后打印msEndpoint行上方的msEndpoint.getTcpPorts()的值:

String[] split = .....

查看其中哪一个的值为if(...) { try { System.out.println(msEndpoint); System.out.println(msEndpoint.getTcpPorts()); String[] split = msEndpoint.getTcpPorts.split(","); ... } }