确定URL是否存在?

时间:2013-11-02 08:55:06

标签: java exception-handling

我有一个遍历大量网址的循环。我的问题是该程序正在写出终端中每个URL的内容,我只想忽略破坏的URL。如何确定URL是否指的是什么?

我是否被迫使用抛出的异常FileNotFoundException?因为它也影响程序的其他部分,我想确保主要的while循环直接跳转到下一次迭代,如果url被破坏。我正在使用的方法抛出异常(在我无法更改的类中),我该如何处理?

这是我的循环(简化):

while(!queue.isEmpty()) {
    URL thisURL = (URL)queue.poll();
    String page = Customurlclass.openURL(thisURL); // return a string containing the page that the url is refering to.
    System.out.println(page);
    // Some other things is also happening here, an I don't want them to happen if the url is broken.
}

所以openURL()正在捕获FileNotFoundException并且终端中打印了很多东西,我只是想忽略它们,我该怎么做?

1 个答案:

答案 0 :(得分:1)

要验证您的String是否是有效的URL,您可以使用Apache commons-validator URLValidator class,如下所示:

String[] schemes = {"http","https"}; // DEFAULT schemes = "http", "https", "ftp"
UrlValidator urlValidator = new UrlValidator(schemes);
if (urlValidator.isValid("ftp://foo.bar.com/")) {
   System.out.println("url is valid");
} else {
   System.out.println("url is invalid");
}

或者即使您不使用Apache common-validator而愿意这样做,也可以使用以下内容:

try {
    URL url = new URL("http://www.yoursite.com/");
    URLConnection conn = url.openConnection();
    conn.connect();
} catch (MalformedURLException e) {
    // the URL is not in a valid form
} catch (IOException e) {
    // the connection couldn't be established
}