2017-11-17 2 views
1

Ich habe versucht, dieses Stück Code ohne Internetverbindung zu laufen, erwarten und IOException auslösen:IOException Java

import java.net.*; 
import java.io.*; 

public class API_connect { 

    public static void main(String[] args) { 
     try { 
      URL API = new URL("http://api.football-data.org"); 
      URLConnection API_connection = API.openConnection(); 
     } 
     catch(MalformedURLException exception) { 
      System.out.print(exception); 
     } 
     catch(IOException exception) { 
      System.out.print(exception); 
      System.out.print("is something going on here?"); 
     }     
    } 

} 

Und gut ... Zu meiner Überraschung nichts gedruckt wurde, und ich kann nicht herausfinden, Warum. Wäre nicht ein Mangel an Internetverbindung der Hauptgrund, warum hier eine IOException ausgelöst wird?

+0

Beim Drucken von Ausnahmen bevorzuge ich im Allgemeinen [printStackTrace()] (https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html#printStackTrace--) – phflack

Antwort

6

openConnection() versucht nicht wirklich zu verbinden:

Es sollte beachtet werden, dass eine URLConnection Instanz nicht die tatsächliche Netzwerkverbindung auf die Schaffung aufstellt. Dies geschieht nur beim Aufruf von URLConnection.connect().

Versuchen Sie connect() darauf anzurufen.

Alternativ können Sie Folgendes versuchen:

new URL(...).openStream().read(); 

, die tatsächlich versuchen würde, 1 Byte von dieser URL zu lesen und scheitern würde.

+0

würde ich fügen Sie hinzu, er öffnet eine Verbindung, aber nichts bekommt und gibt nichts von dieser Verbindung aus. Bedeutung: Es funktioniert und Sie müssen etwas von dieser Verbindung erhalten und schreiben. Manchmal ist nichts das Beste, was passieren kann. In deinem Code. Sie können keine Ausgabe erhalten, wenn sie korrekt funktioniert. – Sens

+0

Ich denke, das OP erwartet eine Ausnahme bei einem Verbindungsversuch. Sowohl 'connect()' als auch 'read()' würden eine Ausnahme erzeugen. –

+0

Das hat tatsächlich die Ausnahme ausgelöst, danke. Jetzt bin ich aber neugierig, warum openConnection() eine IOException auslösen würde. Wenn es offline ist, löst es nicht aus, was wäre das? –

Verwandte Themen