new java.io.IOException:调用需要API级别9

时间:2013-01-17 10:55:33

标签: java android api exception android-2.2-froyo

首先,这是我的代码:

public static boolean loginValide(final String username, final String password) throws IOException {
    final boolean valide = false;
    final String postData = "somePostParameters";
    URL url;
    HttpsURLConnection connexion;

    url = new URL("someUrl");
    connexion = (HttpsURLConnection) url.openConnection();
    try {
        connexion.setDoOutput(true);

        final DataOutputStream dos = new DataOutputStream(connexion.getOutputStream());
        dos.writeBytes(postData);
        dos.flush();
        dos.close();

        final int responseCode = connexion.getResponseCode();
        if (responseCode == HttpURLConnection.HTTP_ACCEPTED) {
            // ...
        }
        else {
            // ...
        }
    } catch (final IOException e) {
        throw new IOException(e); /* I am retrowing an exception so the
        finally block is still called */
    }
    finally {
        connexion.disconnect(); // Close the connection
    }

    return valide;
}

我的问题是我第一次只声明我的方法抛出 IOException 。但如果发生这种情况,我认为 HttpsUrlConnection 不会断开连接。 所以我想抓住 Exception ,重新抛出它,这样当我的方法被另一个类调用时,我可以处理网络/连接错误并告诉用户它,所以代码仍将运行finally块关闭连接。

首先,我是对的?或者还有另一种方法吗? 我不关心方法中的try{} catch{},我只是想确保连接和流将始终关闭,无论是否抛出异常。

另一个问题是我抛出异常的catch{}块。 Eclipse告诉我:

Call requires API level 9 (current min is 8): new java.io.IOException

说真的,我不能使用低于9的API级别抛出异常?我希望这是一个笑话......

3 个答案:

答案 0 :(得分:4)

要将IOEXception与throwable一起使用,您需要min API 9 ..检查

http://developer.android.com/reference/java/io/IOException.html#IOException(java.lang.Throwable

答案 1 :(得分:2)

您可以在eclipse中更改MIN api级别

如果您进入清单文件并设置

    <uses-sdk android:minSdkVersion="8" /> <!--in your case -->

然后,您将整个项目从最初运行2.2.X更改为2.3.X

在构建应用时,您可以随时更改最低API级别。

答案 2 :(得分:2)

即使try-block中的代码抛出异常,也会始终调用finally块中的代码。至于API级别限制 - 它是API级别9中添加的特定IOException(Throwable)构造函数。