我是
Android开发者的总菜鸟.我还在学习,而且我是我的app dev的第一步.
我有这个代码工作,它运行良好或常规Java,现在我正在尝试实现Android操作系统.
在我的代码中,它说TEST.openStream()我得到Unhandled异常类型IOException错误.
package com.zv.android; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.MalformedURLException; import java.net.URL; import android.app.Activity; import android.os.Bundle; public class ZipActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); try { URL TEST = new URL("http://www.google.com/"); BufferedReader in = new BufferedReader(new InputStreamReader(TEST.openStream())); String inputLine; int line=0; while ((inputLine = in.readLine()) != null){ line++; //System.out.println(line + "\t" + inputLine); } // in.close(); } catch(MalformedURLException e) { //Do something with the exception. } } }
解决方法
错误消息很简单:您需要捕获IOException,这是因为URL.openStream()被声明为
public final InputStream openStream() throws IOException
因此,通过接受方法的契约,您也接受了必须处理此异常的事实,这就是它在Java中的工作方式.这是一个经过检查的异常,然后必须捕获它,因为这种异常表示可能出现的情况以及您的代码必须处理的情况.
try { .. catch (MalformedURLException e) { .. } catch (IOException e) { .. }
正如最后一点:当你调用openStream()方法时,你不需要捕获它,你可以声明调用openStream()的方法会将异常转发给调用者,但是在调用链的末尾你在任何情况下都必须抓住它.