当前位置: 首页 > 面试题库 >

最后在使用return时无法到达的语句?

穆彬郁
2023-03-14
问题内容

这样编译:

class Ex1 {
    public int show() {
        try {
            int a=10/10;
            return 10;
        }   
        catch(ArithmeticException e) {
            System.out.println(e);
        }
        finally {
            System.out.println("Finally");
        }
        System.out.println("hello");
        return 20;
    }
}

另一方面,这不是:

class Ex15 {
    public int show() {
        try {
            int a=10/0;
            return 10;
        }
        catch(ArithmeticException e) {
            System.out.println(e);
        }
        finally {
            System.out.println("Finally");
            return 40;
        }

        System.out.println("hello");
        return 20;
    }
}

并给出不可达的语句System.out.println(“ hello”); 错误。为什么会这样呢?


问题答案:

最后有一个返回,因此您可能会遇到无法到达的代码块错误。

finally
{   
    System.out.println("Finally"); 
    return 40;
}
System.out.println("hello"); // unreachable code
return 20;

这实际上是Java中的编译时错误。参见第14.20节。

如果由于语句无法访问而无法执行该语句,则是编译时错误。



 类似资料:
  • 问题1: 为什么下面的代码在没有return语句的情况下进行编译? 注意:如果在while之后添加return,则会得到。 问题2: 另一方面,为什么下面的代码会编译, 即使下面的不是。

  • 我开始写一个二叉树函数。该方法目前的目标是在树中找到节点并返回节点。根值是数据,左边和右边是子树。当我在调试器中单步执行它时,当它到达return语句时,它会跳回第二个if块,并最终返回null。

  • 本文向大家介绍Java中如何使用 lambda 表达式中的 return 语句,包括了Java中如何使用 lambda 表达式中的 return 语句的使用技巧和注意事项,需要的朋友参考一下 return语句不是lambda表达式中的表达式。我们必须用大括号({})括住语句。但是,我们不必将void方法调用括在大括号中。方法的返回类型,其中return语句中使用的lambda表达式必须是函数接口。

  • 为什么我不能在不使用return语句的情况下运行此代码段?

  • 根据在线教程,我尝试使用Swing在java中创建一个GUI。我试着在网上找一个排水沟,但我找不到。代码如下: 但是,当我尝试使用JGraph运行代码时,我会遇到以下错误: River.java:4:错误:找不到符号导入javax.swing.container;^symbol:类容器位置:包javax.swing River.java:8:错误:包javax不存在,导入javax.swing;^

  • 问题内容: 当我尝试编译该程序时,在第21行出现“无法到达的语句”错误: 完整的编译器输出为: 我 认为 这些语句在正确的地方…至少在我看来似乎是正确的,并且与我从中克隆的程序相比,该程序看起来是如此简单,以至于我很难确定为什么要这样做。语句无法到达。 复制代码时我做错了什么,我该如何纠正? 问题答案: 您以为您的问题在这里是对的: 该函数将 终止 您的方法,这意味着将不执行任何超出代码的行。如果