IOException Java

IOException Java,java,exception,Java,Exception,我尝试在没有internet连接的情况下运行这段代码,期望和IOException触发: 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"); URLCo

我尝试在没有internet连接的情况下运行这段代码,期望和IOException触发:

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?");
        }                   
    }

}
而且。。。令我惊讶的是,没有印刷任何东西,我也不知道为什么。缺少internet连接不是引发IOException的主要原因吗?

openConnection()
实际上不会尝试连接:

应该注意,URLConnection实例在创建时不会建立实际的网络连接。只有在调用URLConnection.connect()时才会发生这种情况

尝试对其调用
connect()

或者,您可以尝试以下操作:

new URL(...).openStream().read();
这将实际尝试从该url读取1个字节,但将失败。

openConnection()
不会实际尝试连接:

应该注意,URLConnection实例在创建时不会建立实际的网络连接。只有在调用URLConnection.connect()时才会发生这种情况

尝试对其调用
connect()

或者,您可以尝试以下操作:

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

这实际上会尝试从该url读取1个字节,但会失败。

当打印我通常喜欢使用的异常时,当打印我通常喜欢使用的异常时,我会添加,他打开一个连接,但不会从该连接获取和输出任何内容。意思是:它是有效的,你需要从这个连接中获取并编写一些东西。有时候,没有什么是最好的。在你的代码中。如果它工作正常,您将无法获得任何输出。我认为,OP预期连接尝试会出现异常。
connect()
read()
都会产生异常。这实际上触发了异常,谢谢。现在我很好奇为什么openConnection()会抛出IOException。如果离线不会触发它,那会是什么呢?@RomanPuchkovskiy可能应该为此制作我自己的线程。但是为什么
connect()
read()
会引发异常?
openConnection()
是在
URL
类中定义的,它不是只针对HTTP的(如果“立即连接”可能代价高昂,但它可以与“立即连接”有意义的
file:
协议一起使用。因此我相信
openConnection()
方法的设计者允许它抛出
IOException
以赋予它更大的灵活性(针对不同的实现)。我想补充一点,他打开了一个连接,但没有从该连接中获取和输出任何内容。意思是:它可以工作,您需要从该连接中获取和写入一些内容。有时,没有什么是最好的。在您的代码中。如果它工作正常,您将无法获得任何输出。我想,OP在一次测试中预期连接会出现异常诱惑。
connect()
read()
都会产生异常。这确实触发了异常,谢谢。不过现在我很好奇为什么openConnection()会抛出IOException。如果脱机不会触发它,会发生什么?@RomanPuchkovskiy可能应该为此创建自己的线程。但是为什么
connect()
read()
引发异常?
openConnection()
URL
类中定义,该类不特定于HTTP(如果“立即连接”可能成本高昂,但它可以与“立即连接”有意义的
file:
协议一起使用。因此我相信
openConnection()
方法的设计者允许它抛出
IOException
,以赋予它更大的灵活性(针对不同的实现)。