Atitit.异常处理 嵌套 冗长的解决方案
来源:互联网 发布:淘宝店铺装修设计教程 编辑:程序博客网 时间:2024/05/18 23:55
Atitit.异常处理 嵌套 冗长的解决方案
1.异常处理的需要改进的地方1
2.+异常设计的初衷是, 在程序中出现错误时, 由程序自己处理错误, 尽量不要以exit(0)这种粗暴的方式中止程序. 1
3.正常流程和异常流程的分离。2
4.“是药三分毒”, 任何事物有缺点,异常也是2
5.共存取长补短,协同使用2
6.Solu:事件化处理3
7.ref3
1. 异常处理的需要改进的地方
为了表述方便,下面将主调函数称为“父函数”,被调函数称为“子函数”,以“祖”、“父”、“子”、“孙”等来形容函数之间的调用关系。
一个父函数为什么要调用子函数?因为它知道子函数可以实现某种功能,但父函数根本就不关心子函数是如何实现的,子函数只需向父函数报告结果成功与否。谁知这子函数又调用了孙函数,而这孙函数抛出了一个异常。
那么这个异常该由谁来处理呢?难道要它的祖函数来处理吗?根本不可能。祖函数根本就不知道孙函数是个什么东西,甚至根本不知道有这么一个孙函数的存在,你让它如何去处理这个异常?
一个父函数既然调用了子函数,就应该对这个子函数的行为负全部责任,绝不能把子函数造成的结果交给祖函数处理。所以,处理这个异常的只能是该函数的直接调用者,绝不可越级。
异常处理机制的引入,完全破坏了这个原则。于是,一个父函数,它不但必须了解子函数的行为,还必须了解孙函数、曾孙函数、玄孙函数的种种行为。简直就是不可能的。
2. +异常设计的初衷是, 在程序中出现错误时, 由程序自己处理错误, 尽量不要以exit(0)这种粗暴的方式中止程序.
作者:: ★(attilax)>>> 绰号:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊 ) 汉字名:艾龙, EMAIL:1466519819@qq.com
转载请注明来源: http://blog.csdn.net/attilax
3. 正常流程和异常流程的分离。
另外,(萧筱雨)同志说:C()抛出的异常,应该在B()中处理,即使不好处理,也要转化成B()的异常抛出。
既然如此,那请问这种处理方法与用返回值逐层返回相比,有什么优点?
优点我已经说了,那就是正常流程和异常流程的分离。
4. “是药三分毒”, 任何事物有缺点,异常也是
药可治病,也可致病,说的就是事物矛盾的两重性
。因为药有毒而否认药的价值从而不用它,这达不到治病的目的。矛盾的两重性还告诉我们,对事物进行完全肯定或者否定通常是不正确的,因为还存在着一个科学运用的问题
事物的存在都有其存在的道理,任何事物都是矛盾的统一体,C++中的异常处理也不例外。
由于人们的立场或者视野不同,对于同一事物的看法往往不会是完全相同的,有时甚至会完全相反。由此,就会产生争论
5. 共存取长补短,协同使用
“是药三分毒”,药可治病,也可致病,说的就是事物矛盾的两重性。因为药有毒而否认药的价值从而不用它,这达不到治病的目的。矛盾的两重性还告诉我们,对事物进行完全肯定或者否定通常是不正确的,因为还存在着一个科学运用的问题
其实C++中的异常处理只是另一种形式的错误处理方式,和传统的错误处理方式并不排斥,他们是一种“共存”的关系。只是因为在某些方面或者某些时候,使用异常处理方式比传统的错误处理方式更具优越性,所以异常处理才有了使用的必要,它的存在也才是合理的。
才不会因噎而废食,因为异常处理存在着使用的局限性就否认其价值,才能知道什么情况下使用异常处理比较合适,什么情况下使用异常处理方式和传统错误方式都可以,而什么情况下最好不要使用异常处理,等等。
最后的建议就是:明智地使用异常处理。
6. 冗长cde
orm.callbackFun=function(data)
{
try{
processJavaEx_V2q315(data);
}catch(e)
{
if(catchEx(e,"com.attilax.user.NotLoginEx"))
{
logx("not login");
//window.location=;
return;
//
}
}
var json=str2json(data);
var obj=json[0];
var fm=new AForm()
fm.bind(obj);
};
7. Solu:事件化处理
8. ref
改进异常处理的6条建议- Dancen的专栏- 博客频道- CSDN.NET.html
- Atitit.异常处理 嵌套 冗长的解决方案
- Atitit.异常的设计原理与 策略处理 java 最佳实践 p93
- Atitit 异常的实现原理 与用户业务异常
- 异常处理的解决方案
- Atitit 异常机制与异常处理的原理与概论
- Atitit 异常机制与异常处理的原理与概论
- Atitit.js this错误指向window的解决方案
- Atitit 拦截数据库异常的处理最佳实践
- Atitit 图像处理底色变红的解决
- 关于异常处理的解决方案
- 关于异常处理的解决方案
- Atitit dsl实现(1)------异常的库模式实现 异常的ast结构
- Atitit. Dwr 抛出异常error解决方案
- Atitit避免出现空指针异常解决方案
- Atitit.js javascript异常处理机制与java异常的转换.js exception process Voae
- Rxjava+Retrofit嵌套处理请求,并优雅的处理异常
- Atitit 混合叠加俩张图片的处理 图像处理解决方案 javafx blend
- Atitit. 提升存储过程与编程语言的可读性解决方案v3 qc25.docx
- SSH整合开发实例:用户管理系统
- (小白)unity多线程的学习:Loom-ThreadPoolScheduler类
- CGRectInset,CGRectOffset,UIEdgeInsetsInsetRect的使用说明
- spring mvc date封装与数字格式化
- 实验楼Linux学习笔记(七)之帮助命令
- Atitit.异常处理 嵌套 冗长的解决方案
- 多种多样的meta标签
- 求职岗位
- Seven Puzzle AOJ 0121宽度优先搜索
- String Data JPA使用总结
- okhttp与cookie
- Servlet规范相关实例的获取
- CCF 折点计数
- 99乘法表(C语言版)