getInputstream 上的 NullPointerException
NullPointerException on getInputstream
你知道为什么我在调用 getInputStream() 函数时捕获 NullPointerException 吗?
我记录了 URLConnection,link 是正确的...我不知道是什么问题。
public Bitmap getBitmap(String resolution) {
URL url = null;
Bitmap bmp = null;
switch(resolution) {
case "thumb":
url = thumbUrl;
break;
case "low":
url = lowresUrl;
break;
case "standard":
url = standardresUrl;
break;
}
try {
URLConnection conn = url.openConnection();
InputStream in = conn.getInputStream();
bmp = BitmapFactory.decodeStream(in);
in.close();
}
catch (Exception e) {
Log.e("Error", e.getMessage());
e.printStackTrace();
}
return bmp;
}
鉴于您发布的代码,唯一合理的结论是 conn
是 null
。您可以使用 conditional operator ? :
(三元)如
检查
// InputStream in = conn.getInputStream();
InputStream in = (conn != null) ? conn.getInputStream() : null;
或类似
InputStream in = null;
if (conn != null) {
in = conn.getInputStream();
}
我还注意到你的 switch
没有 default:
,所以 url
也有可能是 null
(但你会得到一个 Exception
在 openConnection()
上,如果是的话)。
在 try-catch 之前声明并初始化您的变量。
在 java 编程中,不要在 try catch.Do 中尝试在 try catch 之前声明变量。
URLConnection conn=null;
InputStream in=null;
try {
conn = url.openConnection();
in = conn.getInputStream();
bmp = BitmapFactory.decodeStream(in);
in.close();
}
谢谢大家的回答。
问题出在这一行的 catch 块内:
Log.e("Error", e.getMessage());
getMessage() 函数返回 null。
你知道为什么我在调用 getInputStream() 函数时捕获 NullPointerException 吗?
我记录了 URLConnection,link 是正确的...我不知道是什么问题。
public Bitmap getBitmap(String resolution) {
URL url = null;
Bitmap bmp = null;
switch(resolution) {
case "thumb":
url = thumbUrl;
break;
case "low":
url = lowresUrl;
break;
case "standard":
url = standardresUrl;
break;
}
try {
URLConnection conn = url.openConnection();
InputStream in = conn.getInputStream();
bmp = BitmapFactory.decodeStream(in);
in.close();
}
catch (Exception e) {
Log.e("Error", e.getMessage());
e.printStackTrace();
}
return bmp;
}
鉴于您发布的代码,唯一合理的结论是 conn
是 null
。您可以使用 conditional operator ? :
(三元)如
// InputStream in = conn.getInputStream();
InputStream in = (conn != null) ? conn.getInputStream() : null;
或类似
InputStream in = null;
if (conn != null) {
in = conn.getInputStream();
}
我还注意到你的 switch
没有 default:
,所以 url
也有可能是 null
(但你会得到一个 Exception
在 openConnection()
上,如果是的话)。
在 try-catch 之前声明并初始化您的变量。 在 java 编程中,不要在 try catch.Do 中尝试在 try catch 之前声明变量。
URLConnection conn=null;
InputStream in=null;
try {
conn = url.openConnection();
in = conn.getInputStream();
bmp = BitmapFactory.decodeStream(in);
in.close();
}
谢谢大家的回答。 问题出在这一行的 catch 块内:
Log.e("Error", e.getMessage());
getMessage() 函数返回 null。