我省略了代码的无关部分:

[...]
    try {
        URL url = new URL(updateUrl);
        BufferedReader input = new BufferedReader(new InputStreamReader(url.openStream()));
[...]
    } catch (MalformedURLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
    } finally {
        input.close();
    }
[...]


问题在于,在最终的“ input.close()”上,Eclipse表示“输入无法解析”。

我认为这可能是一个范围问题,但是我从其他人那里看到过代码,并且通常具有相同的形式,因此我不知道为什么它在这里不起作用。

有什么提示吗?

提前多谢

最佳答案

确实是范围错误。
您的inputtry块内声明,因此在finally块内看不到。在外部声明它,以便它们都可见,并且您应该没问题:

[...]
    BufferedReader input = null;
    try {
        URL url = new URL(updateUrl);
        input = new BufferedReader(new InputStreamReader(url.openStream()));
[...]
    } catch (MalformedURLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
    } finally {
        if (input != null)
        {
            try {
              input.close();
            }
            catch (IOException exc)
            {
              exc.printStackTrace();
            }
        }
    }
[...]

关于java - 最终尝试关闭Android BufferedReader实例时无法解决,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11359305/

10-11 20:40