eclipse黄色警告(finally block does not complete normally) ,不建议在finally中使用return语句
在eclipse中编写例如以下的代码,eclipse会给出黄色告警:finally block does not complete normally。
public class Test
{
public static void main(String[] args)
{
System.out.println(m1(null));
} public static String m1(String name)
{
try
{
name.length();
}
finally
{
return name + "_test";
}
}
}
这段代码执行结果是:控制台打印null_test。不会抛出空指针异常(被JVM吞掉了)。
程序出现了同意异常,可是却被JVM私吞,显然这是不好的做法。不建议在finally块中使用return语句的原因例如以下:
1、finally块中的return语句会覆盖前面的return语句(try块、catch块中的return语句)。会导致非常难推断方法的返回结果,easy得出错误的结论。
2、假设finally块中包括了return语句,即使前面的try或catch块抛出了异常,则调用该方法的语句也不会获得catch块又一次抛出的异常。而是会得到finally块的返回值。而且不会捕获异常。
总之在finally中使用return是不好的编程实践,应该避免使用。关于try-catch-finally中使用return的返回值问题,能够看下http://www.cnblogs.com/aigongsi/archive/2012/04/19/2457735.html这篇博客。列举了非常多种情况,分析也非常具体。就算是有经验的程序猿。也可能会错误地推断方法返回结果,不信你能够去试试。
eclipse黄色警告(finally block does not complete normally) ,不建议在finally中使用return语句的更多相关文章
- finally块的问题(finally block does not complete normally) (转)
当finall块中包含return语句时,Eclipse会给出警告“finally block does not complete normally”,原因分析如下: 1.不管try块.catch块中 ...
- finally块的问题(finally block does not complete normally)
http://blog.csdn.net/chh_jiang/article/details/4557461 当finall块中包含return语句时,Eclipse会给出警告“finally blo ...
- [RN] React Native 关闭所有黄色警告
[RN] React Native 关闭所有黄色警告 console.ignoredYellowBox = ['Warning: BackAndroid is deprecated. Please u ...
- react-native关闭所有黄色警告
写RN经常会遇到黄色警告,很无奈,很多很多的黄色警告都是由组件自己导致的,建议在index.js 内的 AppRegistry.registerComponent('shareFile', () =& ...
- idea中 参数没有描述报错 @param XX tag description is missing错误,去除黄色警告
最近在使用idea开发工具,在方法备注中参数没有描述报错就会报一些黄色警告: @param XX tag description is missing,下面展示去除黄色警告的方法 File--sett ...
- [React Native]去掉WebStorm中黄色警告
用WebStorm开发RN难免会碰到一大堆黄色警告.就像下面这样. 其实这个错误并不会影响开发,但是作为一个上升处女座的,我很难忍.于是各种想办法. 上网查了半天发现这篇文章 http://blog. ...
- oracle:ORA-00911: 无效字符 问题和解决---Eclipse中的SQL语句不能加分号
eclipse中原sql: 异常: 原因:Eclipse中的SQL语句不能加分号 去掉分号,正常执行,插入成功. 这里把id设为了主键,具有唯一性,重复插入同一id执行插入失败,ORA-00001号错 ...
- “finally block does not complete normally”的警告解决
但是,java里面不是可以保证finally一定会执行的么,为什么不可以在finally块做return??? 细细看道来: debug一下这个函数,就会惊讶的发现, 里面抛出的异常会被finally ...
- "finally block does not complete normally"警告解决
转载地址:http://www.cnblogs.com/interdrp/p/4095846.html java里面不是可以保证finally一定会执行的么,为什么不可以在finally块做retur ...
随机推荐
- POJ1200 Crazy Search
Time Limit: 1000MS Memory Limit: 65536KB 64bit IO Format: %I64d & %I64u Description Many peo ...
- GitHub上README写法暨markdown语法解读
原文: GitHub上README写法暨markdown语法解读 自从开始玩GitHub以来,就 越来越 感觉它有爱.最近对它的 README.md 文件颇为感兴趣.便写下这贴,帮助更多的还不会编写R ...
- MySQL 5.7主从复制与主主复制实现细节分析
0.简介: MySQL作为世界上使用最为广泛的数据库之一,免费是其原因之一.但不可忽略的是它本身的功能的确很强大.随着技术的发展,在实际的生产环境中,由单台MySQL数据库服务器不能满足实际的需求.此 ...
- linux反汇编
使用objdump参数可以: -a, --archive-headers 显示压缩头信息 -f, --file-headers 显示目录头总览 -p, --private-h ...
- Vim 自动补全成对的括号和引号
修改后: 1 :inoremap (()<ESC>i 2:inoremap )<c-r>=ClosePair(')')<CR> 3:inoremap {{}< ...
- jquery验证前端页面
一共三个页面 jquery.html文件(前端页面,jquery验证用户信息) jquerytest.php文件(后台处理页面) jquerydb.php文件(数据库) 数据表结构 jquery.ht ...
- AsBcd的意思
- hdu 5158(水题)
Have meal Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
- JAVA版拆分大整数为2幂的和算法
import java.util.ArrayList; import java.util.List; public class StrTest { public static void main(St ...
- Python的并发并行[1] -> 线程[2] -> 锁与信号量
锁与信号量 目录 添加线程锁 锁的本质 互斥锁与可重入锁 死锁的产生 锁的上下文管理 信号量与有界信号量 1 添加线程锁 由于多线程对资源的抢占顺序不同,可能会产生冲突,通过添加线程锁来对共有资源进行 ...