异常处理笔记
来源:互联网 发布:赵烈文 知乎 编辑:程序博客网 时间: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的味道,任何一个事物的处理都可能产生非预
期结果,问题是需要以何种手段来处理,如果不使用异常就需要依靠返回值的不同来进
行处理了,这严重丢失了面向对象的风格。
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的味道,任何一个事物的处理都可能产生非预
期结果,问题是需要以何种手段来处理,如果不使用异常就需要依靠返回值的不同来进
行处理了,这严重丢失了面向对象的风格。
- Java异常处理笔记
- java异常处理笔记
- Java 异常处理笔记
- 异常处理笔记
- 异常处理笔记
- 异常处理学习笔记
- java异常处理笔记
- 异常处理 【java笔记】
- Java异常处理笔记
- php异常处理笔记
- selenium异常处理笔记
- Oracle笔记---异常处理
- Java异常处理笔记
- maven异常处理笔记
- 异常处理的笔记
- java笔记 异常与异常处理
- java 异常处理学习笔记
- java学习笔记 异常处理
- XML 元素
- GRE背词法:17天搞定 ,杨鹏版[转]
- 转:100句走向成功的励志名言
- JavaSE 基础回顾——基础概念
- IOS中Json解析的四种方法
- 异常处理笔记
- linux下修改svn 的剪切路径用relocate
- vc70的文件保存格式-fatal error C1071: 在注释中遇到意外的文件结束
- 带EditText的 AlertDialog 第二次点击报错,child already has a parent错误的解决
- 洞察 DB2 Universal Database: SQL 语句的生命周期
- InfiniBand OS 供应商支持
- Eclipse下配置NDK不用安装Cygwin
- uboot移植过程
- MongoDB Query 的几个方法