Java:从流读取时如何避免NullPointerException?
因此,我有一个this ObjectInputStream,它在大多数情况下都是空的。(这是一个聊天服务器。)我认为这段代码可以处理空条件。(这是在它自己的线程中,这样它就不会阻塞程序的其余部分。我正在重写以前的解决方案,以发送对象,而不是字符串,用于阻塞,直到它得到一些东西。我正在寻找一种具有类似行为的方法。) 当程序运行时,我在这里得到一个空指针异常。(因为该值显然是空的!)我如何让流等待,直到它接收到一些东西来尝试读取它?(或者继续尝试,直到得到非空的内容?) 编辑:堆栈跟踪。(看起来有点短不?)Java:从流读取时如何避免NullPointerException?,java,sockets,exception,serialization,stream,Java,Sockets,Exception,Serialization,Stream,因此,我有一个this ObjectInputStream,它在大多数情况下都是空的。(这是一个聊天服务器。)我认为这段代码可以处理空条件。(这是在它自己的线程中,这样它就不会阻塞程序的其余部分。我正在重写以前的解决方案,以发送对象,而不是字符串,用于阻塞,直到它得到一些东西。我正在寻找一种具有类似行为的方法。) 当程序运行时,我在这里得到一个空指针异常。(因为该值显然是空的!)我如何让流等待,直到它接收到一些东西来尝试读取它?(或者继续尝试,直到得到非空的内容?) 编辑:堆栈跟踪。(看起来有点
我是否遗漏了一些明显的内容?假设在此行中抛出异常:
while((message = (Message) JavaChat.connection.oInStream.readObject()) != null)
可能的原因有三种,而且只有三种
JavaChat
是一个变量或常量,它是null
。(不太可能,因为如果JavaChat
不是类名,那将是一个巨大的Java风格冲突。)JavaChat.connection
的值为null
JavaChat.connection.oInStream
的值为null
null
一旦您找到null
文件,请将其返回到它的来源。。。为什么
调试程序的最佳方法是理解源代码并应用逻辑推理。请发布带有完整回溯的
NPE
,以及它指向的部分代码。这是它指向的部分代码。@QuickBrownFox您能重新措辞吗?时间不早了,这些词对我来说没有任何意义。@hcbpsheanigans发布stacktrace如果是那一行,然后是JavaChat
,JavaChat.connection
,或JavaChat.connection.oInStream
中的一个,计算为null
。在任何情况下,我都可以保证JavaChat.connection不为null,所以听起来我需要仔细检查3。
java.lang.NullPointerException
at javachat2.IncomingReader.run(IncomingReader.java:33)
at java.lang.Thread.run(Thread.java:745)
while((message = (Message) JavaChat.connection.oInStream.readObject()) != null)