try的代码必须是一个原子整体,不要什么东西都往try里边塞

19 篇文章 0 订阅
12 篇文章 0 订阅
try的代码必须是一个原子整体,只是为了完成一个功能,不要什么东西都往try里边塞。
还是以例子说明吧,下边一个例子是检查两个标志位,本来这两个标志位没什么相关性,但因为被绑在了一起就产生了一些笑话。在一次真实的运行中,第一个isPass()出了异常,结果导致了接下去的语句没有执行,输出的结果成了两个“unknow”,而实际上第二个sPass()若能执行,它的结果会是pass。

                    String[] subs = null;
                    try {
                         cdmaFtResult = cdmaBtResult = getResources().getString(
                                   R.string.unknow);
                         subs = result.split(",");
                        
                         cdmaBtResult = isPass(subs[2]);
                         cdmaFtResult = isPass(subs[3]);
                    } catch (Exception e) {
                         Log.e(TAG,
                                   "failed to get cdma BT & FT result:\n"
                                             + e.toString());
                    }

后来,我把这段try分成了两个,分别针对cdmaBtResult = isPass(subs[2]);和cdmaFtResult = isPass(subs[3]);两条语句,并将日志信息分别写成了
"failed to get cdma BT result:\n" + e.toString());
"failed to get cdma FT result:\n" + e.toString());
这样子就清晰多了,运行时也不会再相互干扰了。

其实,早有前辈高人警告过:try的目标应该尽可能明确,因为一旦出了异常,错误的信息也比较明确并且好定位。不过似乎非得自己去中过招,以后才会将这些规则不折不扣地执行下去。ok, you win.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值