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;
}

鉴于您发布的代码,唯一合理的结论是 connnull。您可以使用 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(但你会得到一个 ExceptionopenConnection() 上,如果是的话)。

在 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。