2017-11-17 10 views
1

私は、インターネットに接続せずにコードのこの部分を実行しようとした期待とはIOExceptionをトリガーする:に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?"); 
     }     
    } 

} 

、よく...驚いたことに、何も印刷されなかった、と私は把握することはできませんなぜ。ここでIOExceptionがスローされる主な理由は、インターネット接続の欠如ではないでしょうか?

+0

例外を印刷するときは、一般的には[printStackTrace()](https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html#printStackTrace--)を使用することをお勧めします。 – phflack

答えて

6

openConnection()は、実際に接続しようとしません:URLConnectionのインスタンスが作成上の実際のネットワーク接続を確立していないことに留意すべきである

。これは、URLConnection.connect()を呼び出すときにのみ発生します。

connect()を呼び出してみてください。

代わりに、次のことを試みることができる:実際にそのURLから1つのバイトを読み取り、失敗するだろうしようとするだろう

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

+0

追加すると、彼は接続を開きますが、その接続から何も取得したり出力したりしません。意味:それは動作し、その接続から何かを取得して書き込む必要があります。時には何も起こり得ない最高のものです。あなたのコードで。正しく動作すれば、出力は得られません。 – Sens

+0

私は、OPが接続試行でいくつかの例外を予想していたと思います。 'connect()'と 'read()'の両方が例外を生成します。 –

+0

これは、実際に例外をトリガしました。ありがとうございます。今私はopenConnection()がIOExceptionをスローする理由について興味があります。オフラインになっても起動しない場合はどうなりますか? –

関連する問題