Java 如何有目的地生成ConnectException?

Java 如何有目的地生成ConnectException?,java,Java,我正在使用javaHttpURLConnection类连接到一个url,我想生成ConnectException来监视和记录一些数据。我只是尝试连接随机网站,但我无法生成ConnectionException,即使当我试图访问不存在但正在捕获畸形异常的url时也是如此 从ConnectException的Java文档中 表示尝试将套接字连接到时出错 远程地址和端口。通常,连接被拒绝 远程(例如,没有进程正在侦听远程地址/端口) 这意味着需要拒绝远程服务器的连接,但我不知道这意味着什么以及如何从

我正在使用java
HttpURLConnection
类连接到一个url,我想生成ConnectException来监视和记录一些数据。我只是尝试连接随机网站,但我无法生成
ConnectionException
,即使当我试图访问不存在但正在捕获
畸形异常的url时也是如此

ConnectException
的Java文档中

表示尝试将套接字连接到时出错 远程地址和端口。通常,连接被拒绝 远程(例如,没有进程正在侦听远程地址/端口)


这意味着需要拒绝远程服务器的连接,但我不知道这意味着什么以及如何从我的java代码生成连接?

当您尝试连接到不存在的URL时,可能会发生两种错误:

  • 域本身的DNS条目不存在。想想www.argh-nonexistant.com和www.google.com
  • 域存在,Web服务器正在侦听,但路径不存在。()
  • 在这两种情况下,都不会抛出
    ConnectException
    ,因为此异常需要

  • 域的DNS条目有效且名称解析成功,并且
  • 给定端口上没有运行websever
  • ConnectException
    和套接字基本上位于ISO/OSI堆栈(即TCP/IP)的第3层或第4层,而格式错误的URL是应用层问题

    您的解决方案:查找具有有效DNS条目但没有侦听Web服务器的服务器<代码>::1
    应该是一个安全的赌注,除非您自己在端口80上托管Web服务器。下面是一个简单的工作示例:

    package Foo;
    
    import java.io.IOException;
    import java.net.HttpURLConnection;
    import java.net.URL;
    
    public class TestClass {
        public static void main(String[] args) throws IOException {
            URL url = new URL("http://localhost");
            HttpURLConnection c = (HttpURLConnection)url.openConnection();
            c.connect();
        }
    }
    

    尝试连接到不存在的URL时,可能会发生两种错误:

  • 域本身的DNS条目不存在。想想www.argh-nonexistant.com和www.google.com
  • 域存在,Web服务器正在侦听,但路径不存在。()
  • 在这两种情况下,都不会抛出
    ConnectException
    ,因为此异常需要

  • 域的DNS条目有效且名称解析成功,并且
  • 给定端口上没有运行websever
  • ConnectException
    和套接字基本上位于ISO/OSI堆栈(即TCP/IP)的第3层或第4层,而格式错误的URL是应用层问题

    您的解决方案:查找具有有效DNS条目但没有侦听Web服务器的服务器<代码>::1应该是一个安全的赌注,除非您自己在端口80上托管Web服务器。下面是一个简单的工作示例:

    package Foo;
    
    import java.io.IOException;
    import java.net.HttpURLConnection;
    import java.net.URL;
    
    public class TestClass {
        public static void main(String[] args) throws IOException {
            URL url = new URL("http://localhost");
            HttpURLConnection c = (HttpURLConnection)url.openConnection();
            c.connect();
        }
    }
    

    你在建立连接的过程中是否尝试过关闭无线或拔下网线?你在建立连接的过程中是否尝试过关闭无线或拔下网线?顺便问一下,在连接过程中关闭Wi-Fi也会产生相同的结果。不确定原因。因为操作系统打开的套接字终止;连接已断开。顺便说一下,在连接过程中关闭Wi-Fi也会产生相同的结果。不确定原因。因为操作系统打开的套接字终止;连接断了。