首先,这是我的代码:
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就不会断开。因此,我想捕获异常,重新抛出它,以便当另一个类调用我的方法时,我可以处理一个网络/连接错误并告诉用户它的情况,所以代码仍然会运行finally块来关闭连接。
首先,我说的对吗?或者还有其他方法可以做到这一点?我不关心方法中的try{} catch{},我只想确保连接和流总是被关闭,不管是否抛出异常。
另一个问题是我抛出异常的catch{}块。Eclipse告诉我:
Call requires API level 9 (current min is 8): new java.io.IOException说真的,我不能使用低于9的API级别抛出异常吗?我希望这是个玩笑。
发布于 2013-01-17 11:00:24
即使try-块中的代码抛出异常,最后块中的代码也将始终被调用。至于API级别限制,它是在API 9中添加的特定IOException(Throwable)构造函数。
发布于 2013-01-17 11:01:20
要使用IOEXception和throwable,您需要min API 9..。检查
http://developer.android.com/reference/java/io/IOException.html#IOException(java.lang.Throwable
发布于 2013-01-17 10:59:00
您可以在eclipse中更改MIN api级别。
如果你进入你的清单文件并设置
<uses-sdk android:minSdkVersion="8" /> <!--in your case -->然后,将整个项目从运行2.2.X至少改为2.3.X。
当您仍在构建应用程序时,您可以随时更改最低API级别。
https://stackoverflow.com/questions/14377499
复制相似问题