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

关闭DataOutputStream和DataInputStream时出现unreachable code错误

不可达代码报错原因分析
  • 该报错的本质是Java编译器检测到对应代码片段永远没有执行机会,属于编译阶段的提前校验拦截。
  • 你的第一段代码中while(true)是无退出条件的死循环:循环内部没有任何break、return语句,也没有主动抛出异常终止流程的逻辑,循环会永远运行,因此写在循环后的资源关闭代码永远不可能被执行,直接触发unreachable code报错。
  • 第二段代码可正常运行的核心差异是:while(true)内部存在明确的退出分支,当用户输入字符串为Exit时会执行break跳出循环,后续的资源关闭代码存在可执行路径,因此编译器不会判定为不可达代码。

修复方案

给第一段代码的死循环增加退出分支即可,示例如下:

while (true) {
    System.out.println(inputFromServer.readUTF());
    int choice = scan.nextInt();
    // 新增退出逻辑,比如输入0时退出
    if (choice == 0) {
        outputToServer.writeInt(choice);
        socket.close();
        break;
    }
    if (choice == 1) {
        outputToServer.writeInt(choice);
        System.out.println(inputFromServer.readUTF());
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 15:54:05