我有一个遍历大量网址的循环。我的问题是该程序正在写出终端中每个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并且终端中打印了很多东西,我只是想忽略它们,我该怎么做?
答案 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
}