关键词:
Finally中操作返回值会出现一个问题?值没有被改变?
1 static int M1() 2 { 3 int result = 100; 4 try 5 { 6 result = result + 1; 7 //======引发异常的代码========== 8 int x = 10, y = 0; 9 Console.WriteLine(x / y); 10 //======引发异常的代码========== 11 return result; 12 } 13 catch 14 { 15 Console.WriteLine("catch被执行了"); 16 result = result + 1; 17 return result; 18 } 19 finally 20 { 21 Console.WriteLine("====finally被执行了================="); 22 result = result + 1; 23 } 24 }
结果是:
为什么会这样呢?不是说finally中的代码无论如何都会被执行吗?那就要看编译器会对我们的代码做了什么?
Reflector反编译的代码: 会把我们要返回的值在try-catch中操作之后赋给一个全局变量,并且返回。finally中也操作了num,但是没有赋值给num4。
对于引用类型是怎样的呢?这个大家可以试试,我就不写了,比较基础
java示例代码_如何从try、catch和finally返回值
java示例代码_如何从try、catch和finally返回值 查看详情
trycatchfinally执行顺序
...时,finally仍然会执行;3、finally是在return语句执行之后,返回之前执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,不管finally中的代码怎么样,返回的值都不会改变,仍然是之前保存的值),所以函数返回... 查看详情
字节码分析finally块对return返回值的影响
...i=2;returni;}finally{i=3;}}相信有点经验的程序员一眼就能说出返回的结果为1,但是您真的知道返回的结果为什么为1吗?下面我们通过分析下当前方法的字节码,来说明为什么。查看字节码命令:javap-verboseclass文件?知识点简单 查看详情
异常处理try...catch...finally执行顺序,以及对返回值得影响(代码片段)
异常处理try...catch...finally执行顺序,以及对返回值得影响1、不管有没有出现异常,finally块中代码都会执行;2、当try和catch中有return时,finally仍然会执行;3、finally是在return后面的表达式运算后执行的,所以函数返回值是根据返... 查看详情
try,finally问题
...finally是在return后面的表达式运算后执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,管finally中的代码怎么样,返回的值都不会改变,任然是之前保存的值),所以函数返回值是在finally执行前确定的;4、final... 查看详情
如果我在 Try 块中返回一个值,Finally 语句中的代码会触发吗?
】如果我在Try块中返回一个值,Finally语句中的代码会触发吗?【英文标题】:WillcodeinaFinallystatementfireifIreturnavalueinaTryblock?【发布时间】:2010-09-2514:19:32【问题描述】:我正在为一位朋友审查一些代码,并说他在try-finally块中使... 查看详情
try--catch--finally中return返回值执行的顺序
1、try块中没有抛出异常,try、catch和finally块中都有return语句 1publicstaticintNoException(){2inti=10;3try{4System.out.println("iintryblockis:"+i);5return--i;6}7catch(Exceptione){8--i;9System.out.println("iincatch- 查看详情
06finally中调整返回对象,但是最终返回值未改变(代码片段)
前言//回个家,还什么都没有做,各种各样的问题... 呵呵呵很久以前的一个问题了,当时写了case,但是没有时间来看 并且当时找了一下jls的相关说明,也没有找到具体的和当前问题有关系的地方,还是理解能力不够 问题来自于hllvmgrou... 查看详情
06finally中调整返回对象,但是最终返回值未改变(代码片段)
前言//回个家,还什么都没有做,各种各样的问题... 呵呵呵很久以前的一个问题了,当时写了case,但是没有时间来看 并且当时找了一下jls的相关说明,也没有找到具体的和当前问题有关系的地方,还是理解能力不够 问题来自于hllvmgrou... 查看详情
try--catch--finally中return返回值执行的顺序(区别)
1、try块中没有抛出异常,try、catch和finally块中都有return语句12345678910111213141516public static int NoException(){ int i=10; & 查看详情
try-catch-finally(代码片段)
...le)中。待subroutine执行完毕之后,再恢复保留的返回值到操作数栈中,然后通过return或者throw语句将其返回给该方法的调用者。例子1/**finally块的语句在try或catch中的return语句执行之后返回之前执行*/publicclassTest1publicstaticvoidmain(Str... 查看详情
trycatchfinally
...finally是在return后面的表达式运算后执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,管finally中的代码怎么样,返回的值都不会改变,任然是之前保存的值),所以函数返回值是在finally执行前确定的;4、final... 查看详情
06finally中调整返回对象,但是最终返回值未改变(代码片段)
... RednaxelaFX 2013-06-21直接在finally里用return语句可以干涉返回值,但只是改变显式的局部变量则不改变返回值。finally在执行时,语义上说那个try块里的return语句已经执行完了,只是控制流临返回之前进入finally块里转一... 查看详情
java中,finally在try语句块中的return前执行还是后执行
...finally是在return后面的表达式运算后执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,管finally中的代码怎么样,返回的值都不会改变,任然是之前保存的值),所以函数返回值是在finally执行前确定的;4、final... 查看详情
java中,finally在try语句块中的return前执行还是后执行
...finally是在return后面的表达式运算后执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,管finally中的代码怎么样,返回的值都不会改变,任然是之前保存的值),所以函数返回值是在finally执行前确定的;4、final... 查看详情
trycatchfinally
finally语句块永远不能有return;如果函数带返回值,try和catch语句块必须都要有return;try或catch的return后面的表达式计算完毕,暂存该值;然后进入finally,等待finally执行结束,回到try或catch中返回。finally影响不了返回值。try和catch... 查看详情
try..catch..finally执行顺序return
...finally是在return后面的表达式运算后执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,管finally中的代码怎么样,返回的值都不会改变,任然是之前保存的值),所以函数返回值是在finally执行前确定的;4、final... 查看详情
java面试题-阿辉trycatchfinally,try里有return,finally还执行么?
...ally是在return后面的表达式运算后执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,管finally中的代码怎么样,返回的值都不会改变,任然是之前保存的值),所以函数返回值是在final... 查看详情