HTTP java.lang.IllegalArgumentException: protocol = http host = null

Erwin.Albers

Neues Mitglied
Das folgende kleine Java-Programm verursacht eine IllegalArgumentException beim Aufruf von getResponseMessage:

public class Versuch1g {

public static void main(String[] args) {
BufferedReader in = openURL("http:/www.java-forum.org/");
if (in != null) {
try {
String s;
while ((s = in.readLine()) != null) {
System.out.println(s);
}
in.close();
} catch (IOException e) {
;
}
} else {
System.out.println("URL fehlerhaft oder nicht vorhanden.");
}
}

public static BufferedReader openURL(String s) {
try {
URL url = new URL(s);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setInstanceFollowRedirects(false);
System.out.println(con.getResponseMessage());
return new BufferedReader(new InputStreamReader(
con.getInputStream()));
} catch (MalformedURLException e) {
return null;
} catch (IOException e) {
return null;
} catch (IllegalArgumentException e) {
return null;
}
}
}

De Ursache ist natürlich, dass die URL nur ein / enthält und daher als Host null gesetzt wird. Warum wird die Exception aber nicht durch das catch gefangen? Wenn ich die ResponseMessage oder den ResponseCode nicht abrufe, dann funktioniert die Funktion, es wird eine IllegalArgumentException der nächsten Anweisung gefangen und null als Ergebnis geliefert.
 
Gib mal unter deinem } catch (IllegalArgumentException e) { noch das dazu..

Java:
} catch (IllegalArgumentException e) {
			return null;
		} catch (Throwable e) {
			System.out.println(e.getClass());
			System.out.println(e.getCause());
			return null;
		}

class java.lang.RuntimeException
java.lang.IllegalArgumentException: protocol = http host = null
URL fehlerhaft oder nicht vorhanden.
das heißt: es wird eigentlich eine RuntimeException geworfen...

Hier genauer beschrieben: Chained Exceptions (The Java™ Tutorials > Essential Classes > Exceptions)
 
Zuletzt bearbeitet:

Neue Themen


Zurück
Oben