创建URL时未报告的异常MalformedURLException

时间:2013-07-18 20:22:16

标签: java

请原谅我缺乏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 个答案:

答案 0 :(得分:18)

对于所有已检查的异常,必须在代码中处理它们。这有两种方法。

一般来说, 您可以使用throws子句将异常处理传递给声明方法的调用者。 或者你可以使用try-catch[-finally]构造来处理它们。

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

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

或者您需要使用try-catch块来包围网址声明,例如:

try{
    URL url = new URL("http://www.google.com/");
    //more code goes here
}catch(MalformedURLException ex){
//do exception handling here
}

答案 1 :(得分:4)

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

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

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

答案 2 :(得分:1)

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


参见

答案 3 :(得分:0)

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

Read more about exception handling.

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");

会引发异常。