finally块的问题(finally block does not complete normally)
来源:互联网 发布:蓝桥杯c语言试题2017 编辑:程序博客网 时间:2024/06/08 11:17
finally先执行.可以形象的说,方法在顺序化的一直往下走,走着走着,发现了Rerurn(并未执行),它知道它快活不下去了,临死前.他就去找Finally,让Finally把事情做完.这种情况在Debug的时候比较明显,走到Return所在行,就进Finally,然后再回到Rerurn,作返回
2、
try{ ...
} finally {
...
return;
}
应该写成
try{
...
} finally {
...
}
return;
不要在finally 里面使用 return 或者 new throw()之类的,否则会引起编译器警告
当finall块中包含return语句时,Eclipse会给出警告“finally block does not complete normally”,原因分析如下:
1、不管try块、catch块中是否有return语句,finally块都会执行。
2、finally块中的return语句会覆盖前面的return语句(try块、catch块中的return语句),所以如果finally块中有return语句,Eclipse编译器会报警告“finally block does not complete normally”。
3、如果finally块中包含了return语句,即使前面的catch块重新抛出了异常,则调用该方法的语句也不会获得catch块重新抛出的异常,而是会得到finally块的返回值,并且不会捕获异常。
结论,
finally 内部使用 return 语句是一种很不好的习惯,如果try中还有return语句,它会覆盖了try 区域中 return 语句的返回值,程序的可读性差
面对上述情况,其实更合理的做法是,既不在 try block 内部中使用 return 语句,也不在 finally 内部使用 return 语句,而应该在 finally 语句之后使用 return 来表示函数的结束和返回
0 0
- finally块的问题(finally block does not complete normally)
- finally块的问题(finally block does not complete normally)
- finally块的问题(finally block does not complete normally)
- finally block does not complete normally
- “finally block does not complete normally”的警告
- Java中finally块报finally block does not complete normally
- IDE 提示 'finally' block can not complete normally的问题
- 错误分析:finally block does not complete normally
- 错误分析:finally block does not complete normally
- 错误分析:finally block does not complete normally
- "finally block does not complete normally"警告解决
- eclipse黄色警告(finally block does not complete normally) ,不建议在finally中使用return语句
- finally块的执行
- finally块
- finally块
- finally块
- finally块
- Finally语句块的执行
- java顺时针遍历矩阵
- android批量多渠道封装-python
- GVRP技术
- 如何让 Git 使用 HTTP 代理服务器
- Linux RedHat 6 yum配置使用方法
- finally块的问题(finally block does not complete normally)
- 算法导论-最小生成树-prim算法
- 子线程循环10次,接着主线程循环5次,接着又回到子线程循环10次,接着再回到主线程又循环5次,如此循环50次,请写出程序。
- JSON的C语言编解码器——cJSON和json-c
- 对通用输入输出GPIO的深入理解
- 特定工作表
- overload(重写)和override(重载)的区别
- 9种排序算法的实现
- 去除list中重复值的问题: