结论:
1、不管有木有出现异常,finally块中代码都会执行;
2、当try和catch中有return时,finally仍然会执行;
3、finally是在return后面的表达式运算后执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,管finally中的代码怎么样,返回的值都不会改变,任然是之前保存的值),所以函数返回值是在finally执行前确定的;
4、finally中最好不要包含return,如果try或cathch中和finaly同时有return.返回值不是try或catch中保存的返回值。
即执行的顺序就是try,cathch,finaly,try/cathch中的return不会执行,但是retrun 后面的表达式会执行。
public class FinallyTest {
public int i = 0;
public int exception(){
try {
throw new Exception();
}catch(Exception e){
return ++i;
}finally{
System.out.println("finally " + ++i);
++i; //注释1
//return ++i; ///注释2
}
}
public static void main(String[] args){
FinallyTest ft=new FinallyTest();
System.out.println("main " + ft.exception());
System.out.println("over " + ft.i);
}
}
执行结果:
finally 2
main 1
over 3
如果把注释1的地方注释掉,放开注释2
执行结果:
finally 2
main 3
over 3
另外:如果try或者finally中有return语句,则后面不能再有return语句,编译错误:Unreachable code
分享到:
相关推荐
try、catch、finally、return 执行顺序是 Java 编程语言中的一种 exception 处理机制,用于处理程序中的异常情况。下面我们来详细讲解 try、catch、finally、return 执行顺序的规则和特点。 首先,我们需要了解 try...
即使在`try`或`catch`块中有return语句,`finally`块的代码也会被执行。 5. **多层嵌套** 你还可以在`try-catch-finally`结构内部嵌套另一个`try-catch-finally`结构,以处理更复杂的情况。这种方式使得异常处理...
即使`try`或`catch`块中存在`return`语句,`finally`块的代码也会被执行。这确保了程序的整洁和资源的有效管理。 在Java中,`try-catch-finally`结构可以单独使用,也可以嵌套使用。嵌套的`try-catch-finally`允许...
`finally` 块总是会被执行,即使在 `try` 或 `catch` 中已经有一个 `return` 语句,这使得我们可以确保无论发生什么情况,都能执行必要的清理工作并返回一致的结果。 通过分析 `12.5-1.js` 和 `try-catch-finally-...
try-catch-finally执行顺序验证(左边是.java文件,右边是.class文件) 提示: try、catch块内的return操作编译后会变成把return的值保存到变量var的操作。 总结: try、catch块内的return操作编译后会变成把return的值...
即使在`try`或`catch`块中有`return`语句,`finally`块仍然会先执行。在这个过程中,函数会将`try`或`catch`块中的`return`语句返回的值暂存起来,然后执行`finally`块。 如果在`finally`块中也有`return`语句,...
Condition 3: try中有异常,try-catch-finally里都没有return ,finally 之后有个returntry中有异常以后,根据
try-catch-finally语句是Java语言中一种常用的异常处理机制,当程序在执行过程中出现异常时,可以使用try-catch-finally语句来捕获和处理异常。下面将详细介绍try-catch-finally语句的使用方法和注意事项。 一、try...
在Java的异常机制中,如果finally中含有return语句,则try和catch中的return语句将会被JVM忽视
首先,需要了解的是,在 try-finally 或者 catch-finally 中,如果 try 或者 catch 中有 return 语句,则 finally 中的代码一定会执行,并且是在 return 前执行的。如果 finally 中也有 return 语句,那么finally 中...
本示例中的"trycatch.zip"文件内容就是展示了如何在Golang中模拟`try...catch`和`try...catch...finally`。 Golang的核心错误处理方式是通过返回错误值。通常,函数会返回一个错误值,如果在执行过程中遇到问题,就...
即使在`try`或`catch`块中有`return`语句,`finally`块的代码也会被执行。 ```csharp finally { // 无论是否发生异常都会执行的代码 } ``` 在示例中,无论`j`的值是否为0,`finally`块的`Console.WriteLine(j....
第一:return语句并不是函数的终出口,如果有finally语句,这在return之后还会执行finally(return的值会暂存在栈里面,等待finally执行后再返回) 第二:finally里面不建议放return语句,根据需要,return语句...
在Java编程语言中,`finally`语句块是一个非常关键的结构,用于确保特定代码无论在任何情况下(包括异常发生或正常返回)都会被执行。这个特性使得`finally`成为处理资源清理,如关闭文件流、数据库连接等操作的理想...
即使在`try`或`catch`块中有`return`语句,`finally`块中的代码也会被执行: ```java try { // 代码 } catch (ExceptionType1 e1) { // 处理 } catch (ExceptionType2 e2) { // 处理 } finally { // 清理资源,...
例如,在try语句块之前返回(return)或者抛出异常的情况下,finally语句块都不会执行。 下面是一个示例代码Demo1: public class Test { public static void main(String[] args) { System.out.println("return ...
2. 如果`finally`块有`return`语句,无论`try`块是否包含`return`,`finally`块的`return`语句都将决定最终的返回值,因为`finally`总是被执行。 理解这一点对于编写健壮、可靠的Java代码至关重要,特别是涉及资源...
2. **资源管理**:Try…Catch 结合 Finally 语句块常用于确保资源(如数据库连接、文件流等)在任何情况下都能被正确关闭。例如,在示例中,即使在打开数据库连接时出现异常,Finally 块也会确保在程序退出前关闭...
在某些情况下,finally 语句可能不会被执行,例如在 try 语句之前就返回了,在 try 块中有 System.exit(0) 语句等。 那么,finally 语句是在 try 的 return 之前还是之后执行的呢?这个问题引起了很多人的探讨和...
Java finally语句到底是在return之前还是之后执行?Java finally执行深度剖析,具体看这篇博文:http://blog.csdn.net/lanxuezaipiao/article/details/16922895,这是里面相关的源码,欢迎大家下载使用。