我是Android开发者的总菜鸟.我还在学习,而且我是我的app dev的第一步.
我有这个代码工作,它运行良好或常规Java,现在我正在尝试实现到Android操作系统.
在我的代码中,它说TEST.openStream()我得到Unhandled exception type 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.
}
}
}
Run Code Online (Sandbox Code Playgroud)
错误信息很简单:你需要捕获IOException,因为URL.openStream()声明为
public final InputStream openStream() throws IOException
Run Code Online (Sandbox Code Playgroud)
因此,通过接受方法的契约,您也接受了必须处理此异常的事实,这就是它在Java中的工作方式.这是一个经过检查的异常,然后必须捕获它,因为这种异常表示可能出现的情况以及您的代码必须处理的情况.
要抓住它,只需在try声明中添加另一个案例:
try {
..
catch (MalformedURLException e) {
..
}
catch (IOException e) {
..
}
Run Code Online (Sandbox Code Playgroud)
正如最后一点:当你调用openStream()方法时你不需要捕获它,你可以声明调用的方法openStream()会将异常转发给调用者但是在调用链的末尾你必须捕获它任何情况.
| 归档时间: |
|
| 查看次数: |
19590 次 |
| 最近记录: |