Java 从try-finally块中的try块返回
我有两个代码段,分别是我从try返回的和have finally block。第一个代码段运行良好,也可以从finally打印,之后在第1行给出编译时错误 第一段Java 从try-finally块中的try块返回,java,try-catch,try-catch-finally,try-finally,Java,Try Catch,Try Catch Finally,Try Finally,我有两个代码段,分别是我从try返回的和have finally block。第一个代码段运行良好,也可以从finally打印,之后在第1行给出编译时错误 第一段 class abc { public static void main(String args[]) { System.out.println("1"); try { return; } catch (Exception ex) { System.out.println("Ins
class abc {
public static void main(String args[]) {
System.out.println("1");
try {
return;
} catch (Exception ex) {
System.out.println("Inside catch");
} finally {
System.out.println("2");
}
System.out.println("3");
}
}
第二个代码段(编译时错误)
答复:
原因是在第一个代码段中有一个执行路径,后面跟着catch块,但在第二个代码段中没有这样的路径,所以finally之后的语句是不可访问的。第1行是不可访问的语句。因为没有可能去1号线 如果异常出现,它将在内部中断。如果不是,则从方法返回
如果catch块在那里,它确保如果try块中发生异常,它将转到第1行lass Test11。这是因为您的代码中有writen。请检查语法。@santoshgore编辑过。在键入时留下它。那么,您的问题是什么?我想这是,如果
return
本身抛出一个错误
@jbnize,那么会发生什么呢?我想,为什么添加catch
块会产生一个“无法访问的语句”错误呢。
class Test11 {
public static void main(String[] args) {
Test11 test = new Test11();
System.out.println("1");
try {
return;
} finally {
System.out.println("2");
}
// COMPILER ERROR
// System.out.println(test instanceof Test11);// line 1
}
}