when I try to debug my webcrawler by crawling yahoo website, I found that when trying to connect to a website which URL is such as
http://www.youtube.com/w/Kak%E1?v=PIBe_V9PBIA&search=kak%C3%A1, the following exception will happen:
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 12
at java.lang.String.substring(Unknown Source)
at sun.net.www.ParseUtil.unescape(Unknown Source)
at sun.net.www.ParseUtil.decode(Unknown Source)
at sun.net.www.ParseUtil.toURI(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.connect(Unknown Source)
follow is simple testing code:
private static final String urlstring = "
http://www.youtube.com/w/Kak%E1?v=PIBe_V9PBIA&search=kak%C3%A1";
URL url = new URL(urlstring);
URLConnection con = url.openConnection();
con.connect();
since there are no other explicit exceptions except MalformedURLException & IOException mentioned to catch for this code, I am not sure if it is a bug in Java for URL parsing...
anybody got some idea about that?
P.S. ok, somebody has pointed out that Runtime exceptions, like java.lang.StringIndexOutOfBoundsException, do not have to be declared, but they can be thrown. So i need catch StringIndexOutOfBoundsException this exception for my code. But in my understanding, the function should catch all the exceptions from lower functions, and then throw out if it can not handle them, thus we can catch those exception from deep functions. I am not sure Runtime exceptions are exceptional ...