我是java的新手,正在尝试android开发。以下代码生成malformedURLException.can有人帮我识别异常。 任何提示都非常有用
package com.example.helloandroid;
import android.app.Activity;
//import android.widget.TextView;
import android.os.Bundle;
import java.net.*;
import java.io.*;
import android.widget.TextView;
public class HelloAndroid extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView tv = new TextView(this);
String outdata = "";
URL url_g = new URL("http://www.google.com/");
URLConnection ukr = url_g.openConnection();
BufferedReader in = new BufferedReader(new InputStreamReader(ukr.getInputStream()));
String inputLine;
while ((inputLine = in.readLine()) != null)
outdata += inputLine;
in.close();
tv.setText(outdata);
setContentView(tv);
}
}
答案 0 :(得分:6)
这是因为网址构造函数(新网址(“http://www.google.com/”))会抛出Checked Exception,在这种情况下为 MalformedURLException ,这意味着您必须抓住它或在你的方法中声明它。
在onCreate方法中使用try / catch或throws子句。
尝试/捕捉解决方案:
public void onCreate(Bundle savedInstanceState) {
...
try {
URL url_g = new URL("http://www.google.com/");
} catch(MalformedURLException e) {
//Do something with the exception.
}
...
}
抛出解决方案:
@Override
public void onCreate(Bundle savedInstanceState) throws MalformedURLException {
...
URL url_g = new URL("http://www.google.com/");
...
}
检查此项以获取有关例外的更多信息。
http://download.oracle.com/javase/tutorial/essential/exceptions/
答案 1 :(得分:1)
您需要首先在try / catch方法中执行代码。尝试一下,让你有更多的东西吗?
答案 2 :(得分:1)
关于OP代码需要注意的一点是,即使添加了所需的异常处理,代码也不会运行,因为Android不允许主线程中的网络活动。您需要使用AsyncTask,如下所述:http://developer.android.com/resources/articles/painless-threading.html