finally必然执行

try{}
catch{}
finally{}
先是执行try中的代码,如果遇上异常则之执行catch中代码,而finally是必然执行的,除了以下几点finally不执行:

  • 1、电脑突然停电,电脑死机,硬件设备坏了
  • 2、在try或者catch中有终止程序运行的的代码,例如:System.exit(0);退出程序运行

finally修改try或者catch中return的结果

  • 1、前面返回的是对象的引用,然后finally修改的是对象的变量值,此时结果return 的是28。因为return的是对象引用,引用储存在栈当中,在return p;执行过程中会保存当前需要return的值,在这里是p(也就是对象引用),并且return途中会执行finally里的代码,然后修改了p.age的值等于28,这个p.age储存在堆当中,并没有对return 的返回值造成影响,所以p.age成功被修改了

finally面试注意两点

  • 2、return 的是一个基本数据类型,那么由于基本数据类型是储存在栈当中,所以在try{return a}时,return会保存这个return的值也就是a=10;然后在执行finally a=20;虽然此时a变成了20,但是我们return的值是之前保存的那个a=10,所以最后a=10;
    finally面试注意两点
    finally面试注意两点

相关文章:

  • 2021-08-15
  • 2022-01-11
  • 2022-12-23
  • 2021-05-08
  • 2021-11-27
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-10-16
  • 2021-06-23
  • 2021-09-19
  • 2022-01-18
  • 2022-12-23
  • 2022-12-23
  • 2022-02-23
相关资源
相似解决方案