打字猴:1.700448844e+09
1700448844 以User接口为例,我们在声明接口时不再声明异常,而是在具体实现时根据不同的情况产生不同的非受检异常,这样持久层和逻辑层抛出的异常将会由展现层自行决定如何展示,不再受异常的规则约束了,大大简化开发工作,提高了代码的可读性。
1700448845
1700448846 那问题又来了:在开发和设计时什么样的受检异常有必要转化为非受检异常呢?“尽可能”是以什么作为判断依据呢?受检异常转换为非受检异常是需要根据项目的场景来决定的,例如同样是刷卡,员工拿着自己的工卡到考勤机上打考勤,此时如果附近有磁性物质干扰,则考勤机可以把这种受检异常转化为非受检异常,黄灯闪烁后不做任何记录登记,因为考勤失败这种情景不是“致命”的业务逻辑,出错了,重新刷一下即可。但是到银行网点取钱就不一样了,拿着银行卡到银行取钱,同样有磁性物质干扰,刷不出来,那这种异常就必须登记处理,否则会成为威胁银行卡安全的事件。汇总成一句话:当受检异常威胁到了系统的安全性、稳定性、可靠性、正确性时,则必须处理,不能转化为非受检异常,其他情况则可以转换为非受检异常。
1700448847
1700448848 注意 受检异常威胁到系统的安全性、稳定性、可靠性、正确性时,不能转换为非受检异常。
1700448849
1700448850
1700448851
1700448852
1700448853 编写高质量代码:改善Java程序的151个建议 [:1700438187]
1700448854 编写高质量代码:改善Java程序的151个建议 建议113:不要在finally块中处理返回值
1700448855
1700448856 在finally代码块中处理返回值,这是考试和面试中经常出现的题目。虽然可以以此来出考试题,但在项目中绝对不能在finally代码块中出现return语句,这是因为这种处理方式非常容易产生“误解”,会严重误导开发者。例如如下代码:
1700448857
1700448858 public static void main(String[]args){
1700448859
1700448860 try{
1700448861
1700448862 doStuff(-1);
1700448863
1700448864 doStuff(100);
1700448865
1700448866 }catch(Exception e){
1700448867
1700448868 System.out.println(“这里是永远都不会到达的”);
1700448869
1700448870 }
1700448871
1700448872 }
1700448873
1700448874 //该方法抛出受检异常
1700448875
1700448876 public static int doStuff(int_p)throws Exception{
1700448877
1700448878 try{
1700448879
1700448880 if(_p<0){
1700448881
1700448882 throw new DataFormatException(“数据格式错误”);
1700448883
1700448884 }else{
1700448885
1700448886 return_p;
1700448887
1700448888 }
1700448889
1700448890 }catch(Exception e){
1700448891
1700448892 //异常处理
1700448893
[ 上一页 ]  [ :1.700448844e+09 ]  [ 下一页 ]