【发布时间】:2015-07-19 19:34:16
【问题描述】:
我有以下java代码
try {
String u = "http://webapi.com/demo.zip";
URL url = new URL(u);
URLConnection ucon = url.openConnection();
InputStream is = ucon.getInputStream();
}
catch (Exception e) {
Log.d('downloaderror', e.getMessage());
}
但由于某种原因,InputStream is = ucon.getInputStream() 导致错误并触发了 catch 块。而当 catch 块被触发时,e 的值为null。
有人知道我的ucon.getInputStream() 有什么问题吗?我知道http://webapi.com/demo.zip 存在,因为我可以从我的网络浏览器下载文件。
编辑 这是 ucon.getInputstream() 上的堆栈跟踪
java.lang.Exception
at com.example.instantramenz.samplewebview.MainActivity$1.onClick(MainActivity.java:94)
at android.view.View.performClick(View.java:4633)
at android.view.View$PerformClick.run(View.java:19270)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:146)
at android.app.ActivityThread.main(ActivityThread.java:5602)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
at dalvik.system.NativeStart.main(Native Method)
【问题讨论】:
-
e的值是null或者打印的字符串包含文本null(即消息是null)? -
e 的值为空。然后 null.getMessage() 导致应用程序崩溃后
-
请发布堆栈跟踪。如果我没记错的话,catch-block 中的异常永远不会是
null。 -
如果你得到
null作为异常参数的值,你就会遇到更大的问题。我会重新打开,但请尝试 @ElliottFrisch 的建议并使用不同的 http 客户端,您可以在其中轻松检查状态代码和响应正文。 -
1.没有
InputStream.getInputStream()这样的方法。 2. 抛出异常,不返回。 3. 抛出的异常永远不会为空,但它们的消息可以。 4. 你应该记录异常本身,而不仅仅是它的消息。
标签: java inputstream