CodeGym /Java 博客 /随机的 /Java中无法访问的语句代码错误
John Squirrels
第 41 级
San Francisco

Java中无法访问的语句代码错误

已在 随机的 群组中发布
无法访问的代码语句是 Java 初学者的常见问题。许多新手开发人员将错误与“死代码”——另一种与 Java 相关的现象——混淆了。尽管两者在表现上相似,但我们将在本文中介绍一些差异。除此之外,您会发现编译器返回无法访问的代码语句的最常见原因是什么,并发现一些简单的修复方法来让您的代码重新启动并运行。

什么是无法访问的代码?

根据定义,无法访问的语句是当您运行准备好部署的代码时编译器不会执行的语句。无法访问的代码返回语句通常表示程序中存在逻辑错误。尽管有多种原因导致您以这样的语句结束,但在所有情况下,无法访问的代码都是多余的,会使您的程序混乱,应该不惜一切代价避免。

无法访问的代码与死代码

在开发社区中,“无法访问”和“死”代码的概念实际上是同义词。但是,如果您在阅读文档时比较挑剔,您可能会看到开发指南经常将两者分开提及。死代码和无法访问的代码之间有什么区别吗?基本上,这两个错误之间的区别在于编译器对它们的反应方式。如果您在编译器中输入的代码无法访问,您将在 Java 通知中收到编译运行时错误。如果您的语句是“死代码”,则不会出现运行时错误——开发人员将收到以下系统警告:

class DeadCode {
    void deadcode_Method(boolean b) {
    System.out.println("Reachable statement");
        if(true) {
        return;
        }
    System.out.println("Unreachable statement"); // dead code
    }
}
由于在死代码的情况下没有直接的编译器错误,因此更难检测。但是,如果您仔细跟踪System.out.printIn 的返回值,捕捉死代码应该不会给您带来麻烦。

为什么你得到无法访问的代码语句

好消息是,很容易追踪无法访问的代码问题的原因。编译器不断返回错误的主要原因有以下三个:
  • 转移报表。如果你用 return 语句中断你的代码,“return = true”之后的任何东西都不会被执行。
  • 无限循环——你在无限循环之后写的代码也不会被执行,因为系统会不断重复循环动作。因此,当将您的代码转换为字节码时,编译器将发送无法访问的代码错误。
为了帮助您标记和解决这些问题,让我们放大它们。

退货单

return 语句是 Transfer 关键字组的一部分,这意味着它会终止您的方法。它有助于分离功能并有助于保持代码的可读性和清洁性。但是,由于您不能在 return = true 之后向函数添加新语句,因此尝试在关键字之后继续执行函数会给您一个“无法访问的代码”编译器错误。让我们看一下“return = true”错误处理的示例以及编译器对其作出反应的方式。

class GFG {
    public static void main(String args[])
    {
  
        System.out.println("My code will run");
  
        return;
  
        // ironically, this code will never run
        // here’s an unreachable code message a developer gets.
        System.out.println("My code will run");
    }
}
以下是 return 语句误用在编译器中的显示方式:

prog.java:11: error: unreachable statement
System.out.println(“My code will run”);
^
1 error
为了巩固您所学的知识,我们建议您观看我们的 Java 课程中的视频课程

中断语句

Break 语句是编写 Java 函数时需要注意的另一种关键字。根据定义,break 关键字用于终止循环。在下面的示例中,当开发人员退出循环时,他将无法再执行第 8 行的语句 - 因此,编译器将显示无法访问的语句错误。以下是将导致无法访问的代码语句的示例代码:

public class JavaCodeGeeks
     {
    public static void main(String[] args) {
     for(int i=1;i<5;i++)
        {
        System.out.println(i);
        break;
        System.out.println("Code after break");
        }
    }
}
从编译器的角度来看错误,您将得到以下错误语句。

JavaCodeGeeks.java:8: error: unreachable statement
System.out.println("After break");
                ^
1 error

继续声明

Continue 是一个循环控制关键字,用于重复操作。每当您希望循环的执行自己从头开始时,请将 continue 添加到您的代码中。该语句有助于开发人员选择他们想要重复的循环语句以及他们不会放入迭代中的语句。尽管 continue 是一个简单易用的关键字,但如果不完全了解它的工作原理,开发人员就会陷入“无法访问的代码”陷阱。因为,遇到continue后,系统会重复循环,关键字将无法到达其后的语句。说,你有以下代码:

public class JavaIsFun
{
    public static void main(String[] args) {
        for(int i=0;i<8;i++)
        {
            System.out.println(i);
            if(i==5)
            {
                continue;
                System.out.println("Coding after continue");
            }
        }
    }
}
系统不会执行你的“Coding after continue”语句——编译器会立即让你知道。

JavaIsFun.java:10: error: unreachable statement
                                System.out.println("Coding after continue");

无限循环

与“break”和“continue”关键字用例示例类似的场景是无限循环。在设计无限循环时,开发人员应该记住,它之后的任何语句都不会运行。因此,如果你不打破循环,那么后面写的所有代码都将无法访问。这是一个有趣的无限循环错误处理示例,需要检查:

public class JavaCodeGym
{
    public static void main(String[] args) {
        while(true)
        {
            System.out.println("Hey there");
        }
        System.out.println("Nice to see you");
    }
}
你能猜出错误隐藏在哪里吗?运行代码后,编译器会立即指向它:

//unreachable code statement compiler error
JavaCodeGym.java:10: error: unreachable statement
                System.out.println("Nice to see you");
‘
由于在"Nice to see you" 之前有一个无限循环,该语句将永远不会执行并继续返回无法访问的代码错误。

结论

为避免无法访问的代码,您需要确保所有系统语句都有流。大多数 Java 无法访问的代码问题都与处理关键字和管理循环不当有关。归根结底,仔细检查您的代码是避免无法访问的代码错误的唯一可靠方法。您也不应因它们而气馁——创建流畅的 Java 代码的习惯来自于多年的经验和实践。那么,让我们打开 IDE 并开始构建出色的软件产品。
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION