异常处理笔记

来源:互联网 发布:赵烈文 知乎 编辑:程序博客网 时间:2024/06/05 18:51
1. 提倡异常封装
  1> 提高系统的友好性
封装异常,把异常的阅读者分为两类:开发人员和用户。
 
  2> 提高系统的可维护性
对异常进行分类处理,并进行封装输出。
 
  3> 设置异常容器(捕获多个异常)
  

2. 采用异常链传递异常


3. 受检异常尽可能转化为非受检异常
   受检异常威胁到系统的安全性、稳定性、可靠性、正确性时,不能转换为非受检异常。
   
4. 使用 Throwable 获得栈信息
StrackTraceElement[] sts = new Throwable().getStakctTrace();
for (StrackTraceElement st : sts) {
if (st.getMethodName().equals("m1")) {
return true;., 
}
}


5. 异常只为异常服务
异常只能用在非正常的情况下,不能成为正常情况的主逻辑,也就是说,异常只是主
场景中的辅助场景,不能喧宾夺主。


6. 多使用异常,把性能问题放一边
例子:
比如我在马路上走(这就是主逻辑),突然开过一辆车,我要避让(这是受检异常,
必须处理),继续走着,突然一架飞机从我头顶飞过(非受检异常),我可以选择继续
行走(不捕捉),也可以选择指责其噪音污染(捕捉,主逻辑的补充处理),再继续走
着,突然一颗流行砸下来,这没有选择,属于错误,不能做任何处理。

这样具备完整例外情景的逻辑就具备了OO的味道,任何一个事物的处理都可能产生非预
期结果,问题是需要以何种手段来处理,如果不使用异常就需要依靠返回值的不同来进
行处理了,这严重丢失了面向对象的风格。