`

在try语句块中return,还会继续执行finally语句块中的语句么

    博客分类:
  • J2EE
 
阅读更多

1.首先尝试在try中return,看finally是否能执行到,测试代码如下:

public class FinallyTest {
结果是:

public String returnString() {

String str;
try {
str = "Hello, William";
System.out.println("This is try block.");
return str;
}
catch(Exception e) {
System.out.println("This is catch block.");
}
finally {
System.out.println("This is finally block.");
}
return null;
}

}

This is try block.
This is finally block.

可见不管try里是否有return,finally最终仍会执行到。

2.但是在try中System.exit(0),finally还会不会执行呢?还是来段测试代码,如下:

public class FinallyTest1 {
结果是:

 public static String returnString() {
 
  String str;
  try {
   str = "This is try block.";
   System.out.println(str);
   System.exit(0);
  }
  catch(Exception e) {
   System.out.println("This is catch block.");
  }
  finally {
   System.out.println("This is finally block.");
  }
  return null;
 }

}

This is try block.

可见,这种情况下,finally还未被执行,程序就退出了。碰到这种情况,如果还想在程序退出之前执行一些代码,可以参见addShutdownHook这个函数。

总结:return之前没有System.exit() ;之类的直接让应用停下来的代码的话, finally中的代码就会执行 并且是在return之前执行

分享到:
评论

相关推荐

    java 中finally语句块与return的执行关系

    首先,需要了解的是,在 try-finally 或者 catch-finally 中,如果 try 或者 catch 中有 return 语句,则 finally 中的代码一定会执行,并且是在 return 前执行的。如果 finally 中也有 return 语句,那么finally 中...

    try、catch、finally、return 执行顺序.doc

    在执行 try、catch、finally 语句时,finally 语句总是最后执行的,也就是说,即使在 try 或 catch 语句中有 return 语句,finally 语句仍然会执行。finally 语句是在 return 语句执行之后、返回之前执行的,这意味...

    Java finally语句到底是在return之前还是之后执行?

    1. 如果`try`块中的代码没有抛出异常,那么`finally`块会在`try`块结束时执行,之后控制权将传递给相应的`return`语句。 2. 如果`try`块中的代码抛出一个未捕获的异常,`finally`块仍然会执行,然后再将异常传递给...

    try-finally-return-in-finally.rar_return

    在JavaScript中,当`try`块中的`return`语句执行时,控制流会立即跳到`finally`块,执行`finally`中的代码。如果`finally`块也有`return`语句,那么它将覆盖`try`块的`return`,返回`finally`块的值。换句话说,最后...

    关于Java中try finally return语句的执行顺序浅析

    可以看到,finally语句块在try语句块中的return语句之前执行。 finally语句块的执行顺序是非常重要的,需要我们认真地了解和掌握。只有在try语句块得到执行的情况下,finally语句块才会执行,而不是一定会执行的。

    try-catch-finally-return-in-finally.rar_return

    `finally` 块总是会被执行,即使在 `try` 或 `catch` 中已经有一个 `return` 语句,这使得我们可以确保无论发生什么情况,都能执行必要的清理工作并返回一致的结果。 通过分析 `12.5-1.js` 和 `try-catch-finally-...

    try-catch-finally捕获异常

    try-catch-finally语句是Java语言中一种常用的异常处理机制,当程序在执行过程中出现异常时,可以使用try-catch-finally语句来捕获和处理异常。下面将详细介绍try-catch-finally语句的使用方法和注意事项。 一、try...

    浅谈Java finally语句到底是在return之前还是之后执行(必看篇)

    从结果可以看到,finally 块中的 return 语句会覆盖 try 块中的 return 语句,try 块中的 return 语句就不能返回了。 finally 语句是在 try 的 return 语句执行之后,return 返回之前执行的。 finally 块中的 ...

    try_catch_finally异常处理java

    即使`try`或`catch`块中存在`return`语句,`finally`块的代码也会被执行。这确保了程序的整洁和资源的有效管理。 在Java中,`try-catch-finally`结构可以单独使用,也可以嵌套使用。嵌套的`try-catch-finally`允许...

    谈谈Java中try-catch-finally中的return语句

    这里,`finally`块包含了另一个`return`语句,它会覆盖`try`块中的`return`。`finally`中的`return x;`会将3放入返回值区域,并立即返回,因此方法返回3。 在代码三中: ```java static int intc(){ int x =0; ...

    关于Java中的try-catch-finally语句和return

    第一:return语句并不是函数的终出口,如果有finally语句,这在return之后还会执行finally(return的值会暂存在栈里面,等待finally执行后再返回)  第二:finally里面不建议放return语句,根据需要,return语句...

    python函数中return后的语句一定不会执行吗?

    finally: # finally语句块执行 print(98) print(fun()) # 输出:98ok print('----------') print(func()) # 输出:9898ok ``` 在这个例子中,`fun()`函数在遇到`return`后立即结束,所以`print(98)`后面的代码...

    使用try-catch-finally处理异常

    即使在`try`或`catch`块中有return语句,`finally`块的代码也会被执行。 5. **多层嵌套** 你还可以在`try-catch-finally`结构内部嵌套另一个`try-catch-finally`结构,以处理更复杂的情况。这种方式使得异常处理...

    try~catch~finally中关于return的问题

    在Java的异常机制中,如果finally中含有return语句,则try和catch中的return语句将会被JVM忽视

    Java异常处理中同时有finally和return语句的执行问题

    即使在`try`块或`catch`块中有`return`语句,`finally`块内的代码也会在返回之前被执行。这是为了确保资源的清理或其他重要的操作能够完成。 第一种情况中,`try`块包含了`return`语句,`finally`块不包含`return`...

    Java中finally和return的关系实例解析

    这意味着,如果在try块中执行了return语句,finally语句将在return语句执行之前执行。如果finally语句中包含了return语句,即使前面的catch块重新抛出了异常,则调用该方法的语句也不会获得catch块重新抛出的异常,...

    浅谈Java中return和finally的问题

    2. **`return` 与 `finally` 的执行顺序**:在 `try` 块中遇到 `return` 时,会先执行 `finally` 语句块,然后再返回值。这是因为 `finally` 中的代码优先级高于 `return`,即使 `return` 已经被触发,`finally` ...

    对python中的try、except、finally 执行顺序详解

    4. **test4()**: `try` 块的 `return` 语句在 `finally` 块执行前锁定了返回值,但 `finally` 中的变量修改不会影响返回值。`finally` 完成后,返回 `try` 块的 `return` 值。 5. **test5()**: 这是一个循环中的...

    Java中finally块执行与return关系深度剖析

    Java finally语句到底是在return之前还是之后执行?Java finally执行深度剖析,具体看这篇博文:http://blog.csdn.net/lanxuezaipiao/article/details/16922895,这是里面相关的源码,欢迎大家下载使用。

    Python中的异常处理详解及try-except语句的工作原理.zip

    即使`try`或`except`块中包含`return`语句,`finally`块也会被执行。 ```python try: # 可能引发异常的代码 except ExceptionType: # 处理异常的代码 finally: # 无论是否发生异常都会执行的代码 ``` 5. *...

Global site tag (gtag.js) - Google Analytics