java-尝试捕获块中的空指针异常

java-尝试捕获块中的空指针异常,第1张

概述收到以下运行时错误,导致我的应用程序在启动时崩溃EFATALEXCEPTION:MonitoringThread13533AndroidRuntimeEProcess:foo.com,PID:1353313533AndroidRuntimeEjava.lang.NullPointerException13533AndroidRuntimeEatfo

收到以下运行时错误,导致我的应用程序在启动时崩溃

E FATAL EXCEPTION: MonitoringThread 13533 AndroidRuntime E
Process: foo.com, PID: 13533 13533 AndroIDRuntime E
java.lang.NullPointerException 13533 AndroIDRuntime E at
foo.com$MonitoringThread.run(foo.java:125) 13533
AndroIDRuntime E at java.lang.Thread.run(Thread.java:841)

冒犯的行是

ret = mConnection.getinputStream().read(buffer);

在以下代码片段中

try {    ret = mConnection.getinputStream().read(buffer);    } catch (IOException e) {    break;    }

有人可以建议尝试调试的下一步吗?
我认为使用try catch块可以消除任何空指针错误.

解决方法:

您不应该使用try / catch块来消除空指针异常.空指针异常应向下传递,以使程序员知道问题出现的位置和位置.

就您而言,您正在捕获IOException,因此它不是NullPointerException.

还要检查导致此异常的null是什么,也许是其mConnection?或getinputStream()返回null.

从此示例中,您还可以看到最好不要在一行中执行很多方法:

ret = mConnection.getinputStream().read(buffer);

最好写:

inputStream is = mConnection.getinputStream();ret = is.read(buffer);

这样,您将从呼叫堆栈中了解NPE的起源,

如果您的代码不安全,例如您知道可以从某种方法获取nullpointer,则只需对其进行检查:

inputStream is=null;if ( mConnection != null ) {   is = mConnection.getinputStream();   if ( is != null ) {     ret = is.read(buffer);   }   else {      // log error?   }} else {   // log error?}
总结

以上是内存溢出为你收集整理的java-尝试捕获块中的空指针异常全部内容,希望文章能够帮你解决java-尝试捕获块中的空指针异常所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1087956.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存