You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ConnectionException无消息文本是否正常?OpenJDK11/17技术问询

Java.net.ConnectException.getMessage()返回null的问题解答

在OpenJDK 11与OpenJDK 17环境下执行以下Java代码:

try
{
    HttpRequest httpreq = HttpRequest.newBuilder().uri(URI.create("http://blabla.blabla.blabla")).build();
    HttpClient httpclnt = HttpClient.newBuilder().build();
    HttpResponse<String> httpresp = httpclnt.send(httpreq, HttpResponse.BodyHandlers.ofString());
}
catch (Exception e)
{
    System.out.println("EXCEPTION: " + e + "   -    " + e.getMessage());
}          

捕获到的java.net.ConnectException的getMessage()返回null,输出结果如下:

EXCEPTION: java.net.ConnectException   -    null

问题解答

  • 该异常无消息文本是正常情况。
  • Java规范明确允许异常的消息文本为null。

ConnectException作为IOException的子类,其提供的构造方法支持传入null作为消息参数。当底层网络连接失败的原因没有明确的可读文本描述时,JDK的网络实现就会抛出不带消息的ConnectException,这完全符合Java的异常设计逻辑。

另外,直接打印异常对象时输出类名,是因为Throwable的toString()方法在消息为null且没有关联cause的情况下,只会返回异常类的全限定名,这也和你看到的输出结果一致。

内容的提问来源于stack exchange,提问作者chris01

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 08:52:36