Java 错误 java.net.ConnectException
本篇文章介绍了 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
以下是出现此异常的可能原因:
- 当任何客户端和服务器不在同一网络中时,两者都应该在互联网或局域网等网络中; 否则,将抛出 ConnectException。
- 当服务器没有运行时。 通常,像 3306 (MySQL)、8080 (Tomcat)、27017 (MongoDB) 和 3000 或 4200 (React/Angular) 这样的端口完全关闭或被其他实体占用,就会抛出 ConnectException。
- 当安全性不允许通信时,例如,在防火墙的情况下。 在这种情况下,它将抛出 ConnectException。
- 当设置被覆盖时,服务器可能正在运行但在端口上列出,它将抛出 ConnectException。
-
当连接字符串不正确时,例如
Connection DemoConnection = DriverManager.getConnection(“jdbc:mysql://localhost/:3306<databasename>?” + “user=<username>&password=<password>”);
。 它将抛出 ConnectException。 - 当错误地给出了错误的端口号时,将会抛出 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
相关文章
解决 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 中无法在系统上找到 JVM 定义 EXE4J_JAVA_HOME 错误
发布时间:2023/07/12 浏览次数:144 分类:Java
-
本篇文章讨论了为什么在您的系统上找不到 JVM 定义 EXE4J_JAVA_HOME 错误。 然后,它还提供了修复此错误的可能解决方案。Java中EXE4J_JAVA_HOME错误描述、可能原因和解决方案
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 错误 SunCertPathBuilderException: Unable to Find Valid Certification Path
发布时间:2023/07/11 浏览次数:164 分类:Java
-
本篇文章将讨论 unable to find valid certification path to requested target 潜在原因及其在 Java 中的解决方案。Java中的sun.security.provider.certpath.SunCertPathBuilderException是什么
Java 错误 Class Expected
发布时间:2023/07/11 浏览次数:66 分类:Java
-
在本文中,我们将研究 Java 中的“.class” expected错误是什么。“.class” expected错误是编译时错误。 有些人可能会感到困惑,因为他们认为这是一个运行时错误,但这是错误的。