在 Java 中,finally 块是用于确保一段代码无论是否发生异常都会被执行的。当 try 块中的代码执行完毕后,或者当 try 块中的代码抛出异常并被捕获时,finally 块中的代码都会被执行。然而,当 finally 块中也存在 return 语句时,执行顺序会变得有些复杂。
以下是 finally 与 return 的执行顺序解析:
try 块中没有抛出异常,那么在执行完 try 块中的代码后,会先执行 finally 块中的代码,然后执行 try 块后面的 return 语句。public int example1() {
try {
System.out.println("Inside try block");
return 1;
} finally {
System.out.println("Inside finally block");
}
}
输出结果:
Inside try block
Inside finally block
返回值:1
try 块中抛出了异常,并且该异常被捕获,那么在执行完捕获异常的代码后,会先执行 finally 块中的代码,然后执行捕获异常的代码后面的 return 语句。public int example2() {
try {
System.out.println("Inside try block");
throw new Exception("Exception in try block");
} catch (Exception e) {
System.out.println("Inside catch block");
return 2;
} finally {
System.out.println("Inside finally block");
}
}
输出结果:
Inside try block
Inside catch block
Inside finally block
返回值:2
finally 块中也存在 return 语句,那么 finally 块中的 return 语句会覆盖 try 块或 catch 块中的 return 语句。public int example3() {
try {
System.out.println("Inside try block");
return 1;
} finally {
System.out.println("Inside finally block");
return 3;
}
}
输出结果:
Inside try block
Inside finally block
返回值:3
总结:无论 try 块中是否发生异常,finally 块中的代码都会被执行。但是,如果 finally 块中存在 return 语句,那么 finally 块中的 return 语句会覆盖 try 块或 catch 块中的 return 语句。因此,在编写代码时,应尽量避免在 finally 块中使用 return 语句,以免引起意外的结果。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。