不能在finally块中return
2016-10-23 17:10
211 查看
try-catch块中永远返回finally中return的值
【错误代码】
static boolean f() {
try {
return true;
} finally {
return false;
}
}
错误分析
在这个应用场景中,不要用return来退出finally语句块,因为finally语句块都会被执行到,这样try程序块中执行正常也会在finally中退出,不会再回到try程序块中。
Try-catch的流程说明:
try {
…
…
return true;
}catch(异常){
…
} finally {
…
}
}
1,try-catch-finally,
如果try语句块遇到异常,try下面的代码就不执行了,转而执行catch语句块,执行完再执行finally语句块,最后结束。
2,try-finally,
如果在try语句块中执行到return语句前一条,未遇到异常,转而执行finally语句块,执行完再执行try中的return语句。
不要用return、break、continue或throw来退出finally语句块
正确用法
//该方法返回false
static boolean f() {
try {
return true;
} finally {
//不做return操作
}
}
【错误代码】
static boolean f() {
try {
return true;
} finally {
return false;
}
}
错误分析
在这个应用场景中,不要用return来退出finally语句块,因为finally语句块都会被执行到,这样try程序块中执行正常也会在finally中退出,不会再回到try程序块中。
Try-catch的流程说明:
try {
…
…
return true;
}catch(异常){
…
} finally {
…
}
}
1,try-catch-finally,
如果try语句块遇到异常,try下面的代码就不执行了,转而执行catch语句块,执行完再执行finally语句块,最后结束。
2,try-finally,
如果在try语句块中执行到return语句前一条,未遇到异常,转而执行finally语句块,执行完再执行try中的return语句。
不要用return、break、continue或throw来退出finally语句块
正确用法
//该方法返回false
static boolean f() {
try {
return true;
} finally {
//不做return操作
}
}
相关文章推荐
- 不能在finally块使用return
- Return 不能终止程序
- finally 里不能有return语句
- try中return语句与finally块的执行先后
- unset不能return 因为返回的是void
- function $(id){ return document.getElementById(id); }导致所有的js不能用解决办法。。。。
- Java异常----try、catch和finally块中的return执行顺序
- 使用javap分析finally块和return值
- return和exit的区别以及为什么vfork的子进程不能return
- try与finally块中return的问题
- try..catch..finally块中的跳转语句(return,break,continue)使用注意事项
- finally块中不允许使用return,continue或break的原因
- jquery ajax 同步异步的执行 return值不能取得的解决方案
- java-finally块和return执行先后顺序
- 使用javap分析finally块中return值(续1)
- 字节码分析finally块对return返回值的影响
- finally块中不允许使用return,continue或break的原因
- 字节码分析finally块对return返回值的影响
- Ajax不能接受php return值原因分析
- SyntaxError: Illegal return statement IE浏览器中'return' 语句在函数之外,不能return解决办法