1.对于finally,是在栈调用中最后调用的。就是说try里所用程序步骤都执行完毕,就等return的时候,finally开始执行。这样最后try里的return就会被覆盖掉。
package com;
public class Test {
public static void main(String[] args) {
System.out.println(test());
}
static int test() {
int i = 0;
try {
return i++;
} finally {
return ++i;
}
}
}
返回2
下面是网上一个同学的误区,认为finally不是最后执行的。原因不必说了。
public class FinallyReturnTest {
public static void main(String[] args) {
tt();
}
// finally中的代码是必须要执行的,而且是在return前执行,除非碰到exit()。
static Return tt() {
try {
return new Return("try");
} catch (Exception e) {
e.printStackTrace();
} finally {
System.out.println("finally");
}
return new Return("outter");
}
}
class Return {
Return(String name) {
System.out.println("return " + name);
}
}
分享到:
相关推荐
在这个结构中,`try`块包含可能会抛出异常的代码,每个`catch`块分别捕获不同类型的异常,`finally`块则包含需要无论发生何种情况都必须执行的代码,如资源清理。 接下来,我们来探讨嵌套的`try-catch`块。当一个`...
try、catch、finally、return 执行顺序是 Java 编程语言中的一种 exception 处理机制,用于处理程序中的异常情况。下面我们来详细讲解 try、catch、finally、return 执行顺序的规则和特点。 首先,我们需要了解 try...
Java try catch finally异常处理组合详解 Java try catch finally异常处理组합是Java语言中的异常处理机制,用于捕获和处理程序中的异常。下面对try catch finally异常处理组合进行详细的介绍。 try catch组合: ...
try-catch-finally执行顺序验证(左边是.java文件,右边是.class文件) 提示: try、catch块内的return操作编译后会变成把return的值保存到变量var的操作。 总结: try、catch块内的return操作编译后会变成把return的值...
在Java、C#、JavaScript等语言中,`try-catch-finally`结构是异常处理的基础。这个结构的执行顺序是固定的,下面我们将深入分析其工作原理。 首先,程序会尝试执行`try`块中的代码。`try`块的作用是包含可能抛出...
例如,在try语句块中执行了System.exit(0)语句,终止了Java虚拟机的运行,finally语句块也不会执行。 下面是一个示例代码Demo2: public class Test { public static void main(String[] args) { System.out....
需要注意的是,在 finally 中改变 return 的值对返回值没有任何影响,这是因为 finally 中的代码是在 return 前执行的,而 return 语句是在 finally 中执行的。因此,对于基本类型的数据,在 finally 中改变 return ...
`try-catch` 结构作为异常处理的核心机制,在各种编程语言中广泛采用,如 Java、C# 和 JavaScript 等。本文将深入探讨 `try-catch` 的基本概念、语法结构及其应用场景。 #### 一、`try-catch` 的基本概念 `try-...
在这个例子中,无论`try`或`catch`块中的`return`语句如何,`finally`块都会执行,确保文件流被关闭。 总的来说,Java的`finally`语句块确保了关键代码的执行,尤其是在处理异常或资源清理的情况下。理解`finally`...
这意味着,如果在try块中执行了return语句,finally语句将在return语句执行之前执行。如果finally语句中包含了return语句,即使前面的catch块重新抛出了异常,则调用该方法的语句也不会获得catch块重新抛出的异常,...
Java中的`try-catch-finally`结构是用来处理异常和确保某些代码无论是否发生异常都能被执行的关键部分。在涉及`return`语句时,其执行顺序可能会引起混淆,尤其是在`finally`块中有操作的情况下。让我们深入探讨一下...
2. **`return` 与 `finally` 的执行顺序**:在 `try` 块中遇到 `return` 时,会先执行 `finally` 语句块,然后再返回值。这是因为 `finally` 中的代码优先级高于 `return`,即使 `return` 已经被触发,`finally` ...
1. **不要单独使用 try、catch 或 finally 语句块**:在Java中,`try`语句块用于包含可能抛出异常的代码,`catch`用于捕获并处理特定类型的异常,而`finally`则用于定义无论是否发生异常都要执行的清理代码。...
Java 中 finally 语句的执行顺序探讨 在 Java 中,finally 语句的执行顺序是一个常见的探讨话题。很多人都认为 finally 语句一定会被执行,但这是不正确的。在某些情况下,finally 语句可能不会被执行,例如在 try ...
例如,如果`try`或`catch`块中有一个`return`语句,`finally`块将在`return`之前执行,但不会阻止`return`语句的执行。 关于字节码层面的解释,根据《深入Java虚拟机》一书的描述,`finally`块的实现是通过`jsr`...
- 示例 `T2` 中,`try` 里的 `return` 使得 `catch` 和 `finally` 之后的代码不被执行,但 `finally` 还是会执行。 - 示例 `Mine` 展示了文件操作异常的处理。当文件不存在时,`FileInputStream` 构造函数会抛出 `...
这里的 `finally` 块是确保即使在 `try` 或 `catch` 中发生异常,`finally` 里的代码也能得到执行,这对于资源管理非常重要,如关闭数据库连接、文件流等。 3. `finalize()` 方法: `finalize()` 是一个特殊的...
- 如果try块中的代码抛出异常,将按顺序检查`catch`块,找到匹配异常类型的`catch`并执行相应的处理代码。执行完`catch`后,`finally`块的代码会执行。 - 如果所有`catch`块都不能匹配抛出的异常,异常会被提交给...
Java通过一套结构化的异常处理机制来管理这些问题,主要包括五个关键字:try、catch、finally、throw和throws。 `try`块包含可能抛出异常的代码,如果在`try`块中发生异常,控制流会立即跳转到匹配的`catch`块。`...
在本文中,我们将深入探讨如何使用Java来读取CSV文件以及按顺序创建新的CSV文件。 首先,我们需要了解如何使用Java的标准库`java.io`和`java.nio`来读取CSV文件。通常,我们可以使用`BufferedReader`或者`Scanner`...