java - 在包含 return 的 try/catch block 之后执行语句

标签 java return try-catch try-catch-finally

需要考虑三种情况:

案例一:

public class Test {

    public static void main(String[] args) {
                System.out.println(1);
                System.out.println(2);
                return;
                System.out.println(3);
    }
}

案例二:

public class Test {

    public static void main(String[] args) {

        try{
            System.out.println(1);
            return;
        }finally{
            System.out.println(2);
        }
        System.out.println(3);
    }
}

案例三:

public class Test {

    public static void main(String[] args) {
        try{
            System.out.println(1);
            return;
        }catch(Exception e){
            System.out.println(2);
        }
        System.out.println(3);
    }
}

我明白,如果情况 1 语句 System.out.println(3) 无法访问,这就是编译器错误的原因,但为什么编译器在情况 3 中不显示任何错误。

另请注意,在情况 2 中它甚至是编译器错误。

最佳答案

案例三:

如果引发异常,那么您的所有代码都可用,并且它会打印 1,2,3。这就是为什么您在那里没有任何错误(无法访问的代码)的原因。

案例 2:

在这种情况下,无论如何你都不会到达 System.out.println(3),因为你总是从 main 方法返回。

关于java - 在包含 return 的 try/catch block 之后执行语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23892578/

相关文章:

javascript - 如何从捕获的异常循环中返回值?

java - 应该尝试...catch 进入循环内部还是外部?

java - 如何正确使用try-catch?

java - 在 Glassfish 中使用来自急切获取的 JSF 托管 bean 的 spring bean 的问题

java - 从另一个 ListView 发送到一个 ListView

c++ - 返回对类的引用

java - 返回空指针异常但预期有 MovieListException?

java - JSTL 持久数据库连接

java - IntelliJ 卡在 "Copying resources"

sql - SQL Server存储过程错误: “A severe error occurred on the current command. the results if any should be discarded”