迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Java >

Java 错误 java.net.ConnectException

作者:迹忆客 最近更新:2023/07/11 浏览次数:

本篇文章介绍了 Java 中的 java.net.ConnectException 错误。


Java 中的 java.net.ConnectException 错误

java.net.ConnectException 是使用网络时最常见的异常。 它主要发生在客户端、应用程序和服务器之间建立 TCP 连接时。

它是一个经过检查的应用程序,可以使用 try-catch 块在代码中进行处理。 该异常是IO异常的子类。

这是此异常的层次结构:

     java.lang.Object
        java.lang.Throwable
            java.lang.Exception
                java.io.IOException
                    java.net.SocketException
                        java.net.ConnectException

以下是出现此异常的可能原因:

  1. 当任何客户端和服务器不在同一网络中时,两者都应该在互联网或局域网等网络中; 否则,将抛出 ConnectException。
  2. 当服务器没有运行时。 通常,像 3306 (MySQL)、8080 (Tomcat)、27017 (MongoDB) 和 3000 或 4200 (React/Angular) 这样的端口完全关闭或被其他实体占用,就会抛出 ConnectException。
  3. 当安全性不允许通信时,例如,在防火墙的情况下。 在这种情况下,它将抛出 ConnectException。
  4. 当设置被覆盖时,服务器可能正在运行但在端口上列出,它将抛出 ConnectException。
  5. 当连接字符串不正确时,例如 Connection DemoConnection = DriverManager.getConnection(“jdbc:mysql://localhost/:3306<databasename>?” + “user=<username>&password=<password>”);。 它将抛出 ConnectException。
  6. 当错误地给出了错误的端口号时,将会抛出 ConnectException。

让我们尝试一下 ConnectException 的示例:

package jiyik;

import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.*;
import java.util.*;

public class Example {

    public static void main(String[] args) throws IOException {

        String Host_Name = "127.0.0.1";
        int Port_Number = 808;

        Socket New_Socket = new Socket(Host_Name, Port_Number);

        InputStream Input_Stream = New_Socket.getInputStream();
        InputStreamReader Input_Stream_Reader = new InputStreamReader(Input_Stream);
        int Demo_Data;

        StringBuilder Output_String = new StringBuilder();
        while ((Demo_Data = Input_Stream_Reader.read()) != -1) {
             Output_String.append((char)Demo_Data);
        }
    }
}

上面的代码将抛出 ConnectException,因为端口和 IP 无效。 查看输出:

Exception in thread "main" java.net.ConnectException: Connection refused: connect
    at java.base/sun.nio.ch.Net.connect0(Native Method)
    at java.base/sun.nio.ch.Net.connect(Net.java:579)
    at java.base/sun.nio.ch.Net.connect(Net.java:568)
    at java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:588)
    at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:327)
    at java.base/java.net.Socket.connect(Socket.java:633)
    at java.base/java.net.Socket.connect(Socket.java:583)
    at java.base/java.net.Socket.<init>(Socket.java:507)
    at java.base/java.net.Socket.<init>(Socket.java:287)
    at jiyik.Example.main(Example.java:16)

现在,我们可以使用 try-catch 块来处理异常。 由于是检查异常,所以需要在方法中添加 throws。

我们来看看解决方案:

package jiyik;

import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.*;
import java.util.*;

public class Example {

    public static void main(String[] args) throws IOException {

        String Host_Name = "127.0.0.1";
        int Port_Number = 808;

        try (Socket New_Socket = new Socket(Host_Name, Port_Number)) {

            InputStream Input_Stream = New_Socket.getInputStream();
            InputStreamReader Input_Stream_Reader = new InputStreamReader(Input_Stream);
            int Demo_Data;

            StringBuilder Output_String = new StringBuilder();
            while ((Demo_Data = Input_Stream_Reader.read()) != -1) {
                 Output_String.append((char)Demo_Data);
            }
        }

        catch (ConnectException ex) {

            System.out.println( "The Connect Exception  occured becuase the given hostname and port are invalid : " + ex.getMessage());
        }
    }
}

现在异常已被处理,因此不会使代码崩溃。 查看输出:

The Connect Exception  occured becuase the given hostname and port are invalid : Connection refused: connect

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

解决 Java 中 Generic Array Creation 错误

发布时间:2023/07/12 浏览次数:189 分类:Java

本篇文章通过代码示例说明了 generic array creation 错误,并重点介绍了创建通用数组时出现此错误的原因。 本次讨论将得出解决方案,我们将学习如何使用对象数组和反射功能创建通用数组。

修复 Java 错误 java.lang.UnsupportedClassVersionError

发布时间:2023/07/12 浏览次数:125 分类:Java

本篇文章介绍了 Java 中的 Exception in thread main java.lang.UnsupportedClassVersionError 错误。java.lang.UnsupportedClassVersionError的原因 UnsupportedClassVersionError 是 ClassFormatError 异常的子类,当 JVM 尝试读取类并发现

修复 Class X Is Public Should BeDeclared in a File Named X.java 错误

发布时间:2023/07/12 浏览次数:192 分类:Java

我们将经历各个阶段,从演示一个编译时错误开始,该错误指出类 X 是公共的,应该在名为 X.java 的文件中声明。 class X is public, should be declared in a file named X.java 的原因 然后,我们将看到导致此

Java 错误 Invalid LOC Header (Bad Signature)

发布时间:2023/07/12 浏览次数:192 分类:Java

本篇文章介绍了 Java 的无效 LOC 标头(错误签名)错误。Java 中无效的 LOC 标头(错误签名) 每当本地 Maven 存储库中的 jar 文件损坏时,就会出现无效 LOC 标头(错误签名)错误。

Java 错误 Could Not Reserve Enough Space for Object Heap Minecraft

发布时间:2023/07/11 浏览次数:125 分类:Java

本篇文章介绍了 Java 中的 Could not reserve enough space for object heap 错误。Minecraft 是一款非常流行的用 Java 开发的游戏,我们需要 Java 来运行它。Java 中Minecraft 错误Could not reserve enough space for object h

Java 错误 Cannot Determine a Valid Java Home

发布时间:2023/07/11 浏览次数:149 分类:Java

本篇文章介绍了 Java 中的 cannot determine a valid java home 错误。当 Java Home 路径设置不正确时,会出现 cannot determine a valid java home 错误。 我们必须按照以下步骤正确设置我们的 Java Home 来解决这个问

Java 错误 Class Expected

发布时间:2023/07/11 浏览次数:66 分类:Java

在本文中,我们将研究 Java 中的“.class” expected错误是什么。“.class” expected错误是编译时错误。 有些人可能会感到困惑,因为他们认为这是一个运行时错误,但这是错误的。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便