收到以下运行时错误,导致我的应用程序在启动时崩溃
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-尝试捕获块中的空指针异常所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)