博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
try catch finally中的return问题
阅读量:4283 次
发布时间:2019-05-27

本文共 729 字,大约阅读时间需要 2 分钟。

参考:

总结

1.不管有没有出现异常,finally块中的代码都会执行;

2.当try和catch中有return时,finally仍然会执行;

3.执行try 或者catch中的return语句之前,都会先执行finally语句。(此时并没有返回运算后的值,而是先把要返回的值保存起来,不管finally中的代码怎么样,返回的值都不会改变,仍然是之前保存的值),所以函数返回值是在finally执行前确定的;

4.finally中最好不要包含return,否则程序会提前退出,返回值不是try或catch中保存的返回值。

编译器把finally中的return实现为一个warning。

测试:

public class FinallyTest  {
public static void main(String[] args) {
System.out.println(testReturnInTryCatch()); //2 System.out.println(testReturnInFinally()); //3 } static int testReturnInTryCatch() {
int x = 1; try {
x++; return x; } finally {
++x; } } static int testReturnInFinally() {
int x = 1; try {
x++; return x; } finally {
++x; return x; //编译器会报warning } }}

转载地址:http://svdgi.baihongyu.com/

你可能感兴趣的文章
svn (七) work flow 中的4 解决您的错误
查看>>
svn (八) work flow 中的5 解决任何冲突
查看>>
svn (八) work flow 中的6 提交你的修改
查看>>
C++ (一) 命名空间
查看>>
OK6410A 开发板 (六) 3 OK6410A linux-5.11 运行解析
查看>>
市场上的AI芯片
查看>>
OK6410A 开发板 (三) 10 u-boot-2021.01 boot 解析 U-boot 镜像运行部分 cmdline
查看>>
OK6410A 开发板 (三) 11 u-boot-2021.01 boot 解析 U-boot 镜像运行部分 命令的执行
查看>>
OK6410A 开发板 (三) 12 u-boot-2021.01 boot 解析 U-boot 镜像运行部分 boot 详细解析1
查看>>
OK6410A 开发板 (三) 13 u-boot-2021.01 boot 解析 SPL 镜像运行部分 boot 详细解析
查看>>
OK6410A 开发板 (三) 13 u-boot-2021.01 boot 解析 U-boot 镜像运行部分 boot 详细解析2 relocate_vectors
查看>>
OK6410A 开发板 (三) 14 u-boot-2021.01 boot 解析 U-boot 镜像运行部分 boot 详细解析3 relocate_code
查看>>
OK6410A 开发板 (三) 15 u-boot-2021.01 boot 解析 U-boot 镜像编译部分 Makefile解析
查看>>
OK6410A 开发板 (三) 16 u-boot-2021.01 boot 解析 U-boot 镜像运行部分 irq
查看>>
OK6410A 开发板 (三) 17 u-boot-2021.01 boot 解析 U-boot 镜像运行部分 串口
查看>>
OK6410A 开发板 (三) 18 u-boot-2021.01 boot 解析 U-boot 镜像运行部分 env
查看>>
OK6410A 开发板 (三) 19 u-boot-2021.01 boot 解析 U-boot 镜像运行部分 driver model
查看>>
OK6410A 开发板 (三) A u-boot-2021.01 OK6410A 文章整理
查看>>
OK6410A 开发板 (三) 20 u-boot-2021.01 boot 解析 U-boot 镜像运行部分 system clock
查看>>
OK6410A 开发板 (三) 21 u-boot-2021.01 boot 解析 U-boot 镜像运行部分 standalone
查看>>