注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Big鹏 ——学无止境

不谋万世者,不足谋一时;不谋全局者,不足谋一域

 
 
 

日志

 
 

Exception处理  

2017-07-28 16:16:40|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

1、原则:

 如果被调用方显示的向上ThrowException , 那么调用方【必须显示地处理】Exception(向上Throw或者Try...Catch);

Exception处理 - marskobe - Big鹏 ——学无止境

 

2、避免异常堆栈信息被吞掉

 如果被调用方Try...CatchException,但没有打印Exception堆栈信息;而此时调用方也无法获得Exception的信息,那么【Exception 堆栈就被吞掉了】。

Exception处理 - marskobe - Big鹏 ——学无止境


3、被调用方只要Catch Exception 就可以随时打印异常的堆栈信息,但是调用方想拿到异常的信息一般有如下两种方式:

方式一、被调用方、调用方都需要处理异常

      此时,需要被调用方catchException并处理,然后在catch模块里面再向上Throw这个Exception对象e;然后调用方再catch住这个Exception对象e,并处理。

Exception处理 - marskobe - Big鹏 ——学无止境

 

 

方式二、被调用方不需要处理异常、调用方需要处理异常

       此时,被调用方不需catch Exception,只需要向上Throw Exception即可,调用方直接catch Exception即可。

Exception处理 - marskobe - Big鹏 ——学无止境

 

4、被调用方异常处理后返回值处理

Exception处理 - marskobe - Big鹏 ——学无止境
 
 

5、总结

1、如果“被调用方”和“调用方”在同一个项目中(并且部署在同一台机器上),那么建议一方打印Exception即可(避免打印重复的日志)。

2、如果“被调用方”和“调用方”在同的项目中,或者部署在不通的机器上(例如分布式项目的api&service),那么建议双方都需要打印异常,方法如下:

首先,被调用方:首先,要在方法声明上显示地Throw Exception,其次要try...catch Exception 并在catch里面log.error(e.getMessage,e);和手动向上跑出异常throw new Exception(e);

其次,调用方  try...cache Exception log.error(e.getMessage,e);

  评论这张
 
阅读(18)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017