13

请原谅我缺乏 Java 技能,但我通常是一个 C 类人。我正在开始一些 Android 开发,我想简单地发出一个 GET 请求。但是,我什至无法正确编译一个简单的 URL 类型。我不断收到此错误:

HelloWorld.java:17: error: unreported exception MalformedURLException; must be caught or declared to be thrown
 URL url = new URL("http://www.google.com/");
 ^
1 error

运行这个简单的代码时:

 import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.io.OutputStream;
 import java.io.OutputStreamWriter;
 import java.io.Reader;
 import java.io.Writer;
 import java.net.HttpURLConnection;
 import java.net.ProtocolException;
 import java.net.URL;
 import java.net.URLConnection;

public class HelloWorld{

     public static void main(String []args){
        URL url = new URL("http://www.google.com/");

        System.out.println(url.toString());
     }
}

我在这里做错了什么?

4

4 回答 4

24

对于所有已检查的异常,必须在代码中处理它们。这里有两种方法可以做到这一点。

通常,您可以将异常处理传递给声明方法 usingthrows子句的调用者。try-catch[-finally]或者您可以使用构造自行处理它们。

在您的情况下,您需要将throws子句添加到main()方法中

public static void main(String []args) throws MalformedURLException{

或者您需要用try-catch块包围 URL 声明,如下所示:

try{
    URL url = new URL("http://www.google.com/");
    //more code goes here
}catch(MalformedURLException ex){
//do exception handling here
}
于 2013-07-18T20:23:40.233 回答
6

在java中,您必须处理异常。在这样的示例程序中执行此操作的最简单方法是声明main()抛出:

public static void main(String []args) throws Exception {

继续学习,稍后处理异常处理问题。

于 2013-07-18T20:24:20.147 回答
1

URL 的构造函数声明它可能会抛出异常,因此您需要捕获它或将其扔回


于 2013-07-18T20:23:26.267 回答
0

您必须将 url 声明包装在 try-catch 中(或抛出它)

阅读有关异常处理的更多信息。

URL url;
try {
    url = new URL("http://www.google.com/");
} catch(MalformedURLException e) {
    System.out.println("The url is not well formed: " + url);
}

这是因为创建一个 Url 是“危险的”,并创建类似:

new URL("testurl");

将引发异常。

于 2013-07-18T20:25:21.333 回答