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

新java.io.IOException:调用需要API级别9,java,android,api,exception,android-2.2-froyo,Java,Android,Api,Exception,Android 2.2 Froyo,首先,这是我的代码: 公共静态布尔登录验证定义字符串用户名,最终字符串密码引发IOException{ 最终布尔值valide=false; 最终字符串postData=somePostParameters; 网址; 高温超导连接; url=新的URLsomeUrl; connexion=HttpsURLConnection url.openConnection; 试一试{ connexion.setDoOutputtrue; final DataOutputStream dos=新DataOu

首先,这是我的代码:

公共静态布尔登录验证定义字符串用户名,最终字符串密码引发IOException{ 最终布尔值valide=false; 最终字符串postData=somePostParameters; 网址; 高温超导连接; url=新的URLsomeUrl; connexion=HttpsURLConnection url.openConnection; 试一试{ connexion.setDoOutputtrue; final DataOutputStream dos=新DataOutputStreamconnexion.getOutputStream; dos.writeBytespostData; dos.flush; dos.close; final int responseCode=connexion.getResponseCode; 如果responseCode==HttpURLConnection.HTTP\u被接受{ // ... } 否则{ // ... } }捕获最终IOE异常{ 抛出新IOExceptionOne;/*我正在追溯异常,因此 最后一个区块仍然被称为*/ } 最后{ connexion.disconnect;//关闭连接 } 返回valide; } 我的问题是,我第一次只是声明我的方法引发IOException。但是如果发生这种情况,我想HttpsUrlConnection不会被断开。 所以我想捕获异常,重新调用它,这样当我的方法被另一个类调用时,我可以处理网络/连接错误并告诉用户,因此代码仍然会运行finally块来关闭连接

首先,我说得对吗?还是有其他方法可以做到这一点? 我不关心方法内部的try{}catch{},我只想确保连接和流始终是关闭的,不管是否引发异常

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

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

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

您可以在eclipse中更改最小api级别

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

    <uses-sdk android:minSdkVersion="8" /> <!--in your case -->
然后,您将把整个项目从至少运行2.2.X更改为2.3.X


当您仍在构建应用程序时,您可以随时更改最低API级别

finally块中的代码将始终被调用,即使try块中的代码抛出异常。至于API级别限制-它是在API级别9中添加的特定IOExceptionThrowable构造函数。

要将IOEXception与throwable一起使用,您需要使用最小的API 9。。检查


finally块中的代码将始终被调用,即使try块中的代码抛出异常。@archer backticks用于内联代码,而不是每个保留字。不要用得太多。如果有代码块,就把它们作为代码块。为什么不抛出e呢?另外,最后一个代码块总是called@njzk2太好了,我不知道我能做到。谢谢Api等级8为2.2.X,等级9为2.3.X。1.5和1.6与我的问题有什么关系?是的,但我希望我的应用程序能够在2.2.X手机上运行。所以这并不能解决我的问题。这就是为什么我要问如何去做。我知道最终集团将永远被称为。我的意思是,如果我不把try/catch放在bloc中,而只是指出该方法可以抛出异常,那么有没有办法确保HttpsUrlConnection关闭?因为在这种情况下,我没有finally块…@miNde您可以始终使用try finally块-catch块是可选的。这就是我要找的。谢谢