Atitit.异常处理 嵌套 冗长的解决方案
Atitit.异常处理 嵌套 冗长的解决方案
2. +异常设计的初衷是, 在程序中出现错误时, 由程序自己处理错误, 尽量不要以exit(0)这种粗暴的方式中止程序. 1
1. 异常处理的需要改进的地方
为了表述方便,下面将主调函数称为“父函数”,被调函数称为“子函数”,以“祖”、“父”、“子”、“孙”等来形容函数之间的调用关系。
一个父函数为什么要调用子函数?因为它知道子函数可以实现某种功能,但父函数根本就不关心子函数是如何实现的,子函数只需向父函数报告结果成功与否。谁知这子函数又调用了孙函数,而这孙函数抛出了一个异常。
那么这个异常该由谁来处理呢?难道要它的祖函数来处理吗?根本不可能。祖函数根本就不知道孙函数是个什么东西,甚至根本不知道有这么一个孙函数的存在,你让它如何去处理这个异常?
一个父函数既然调用了子函数,就应该对这个子函数的行为负全部责任,绝不能把子函数造成的结果交给祖函数处理。所以,处理这个异常的只能是该函数的直接调用者,绝不可越级。
异常处理机制的引入,完全破坏了这个原则。于是,一个父函数,它不但必须了解子函数的行为,还必须了解孙函数、曾孙函数、玄孙函数的种种行为。简直就是不可能的。
2. +异常设计的初衷是, 在程序中出现错误时, 由程序自己处理错误, 尽量不要以exit(0)这种粗暴的方式中止程序.
作者:: ★(attilax)>>> 绰号:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊 ) 汉字名:艾龙, EMAIL:1466519819@qq.com
转载请注明来源: http://www.cnblogs.com/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 c#.net php v2
atitit..代码生成流程图 流程图绘制解决方案 java c#.net php v2 1.1. Markdown 推荐,就是代码和flow都不能直接使用.1 1.2. Java code2fl ...
- Atitit 桌面软件跨平台gui解决方案 javafx webview
Atitit 桌面软件跨平台gui解决方案 javafx webview 1.1. 双向js交互1 1.2. 新弹出窗口解决1 1.3. 3.文档对象入口dom解析1 1.4. 所以果断JavaFX, ...
- Atitit. 单点登录sso 的解决方案 总结
Atitit. 单点登录sso 的解决方案 总结 1. 系统应用场景and SSO模式选型 2 2. 系统应用的原则与要求 2 2.1. 开发快速简单::绝大部分系统来说,开发快速简单为主 2 2. ...
- atitit.跨架构 bs cs解决方案. 自定义web服务器的实现方案 java .net jetty HttpListener
atitit.跨架构 bs cs解决方案. 自定义web服务器的实现方案 java .net jetty HttpListener 1. 自定义web服务器的实现方案,基于原始socket vs ...
- UIScrollView嵌套的完美解决方案
UIScrollView嵌套的完美解决方案 做iOS开发,不可避免的会遇到UIScrollView的嵌套问题,之前也曾遇到过,吭哧吭哧做完了,效果不理想,和产品大战好几回合,就那样了.不可避免的,又一 ...
- Atitit 翻页功能的解决方案与版本历史 v4 r49
Atitit 翻页功能的解决方案与版本历史 v4 r49 1. 版本历史与分支版本,项目版本记录1 1.1. 主干版本历史1 1.2. 分支版本 项目版本记录.1 2. Easyui 的翻页组件2 ...
- Atitit.pagging 翻页功能解决方案专题 与 目录大纲 v3 r44.docx
Atitit.pagging 翻页功能解决方案专题 与 目录大纲 v3 r44.docx 1.1. 翻页的重要意义1 1.2. Dep废弃文档 paip.js翻页分页pageing组件.txt1 ...
- Atitit 软件项目系统托盘图标解决方案
Atitit 软件项目系统托盘图标解决方案 1.1. Nodejs node-webkit还实现了本地化的API,例如菜单栏,系统的托盘图标支持1 1.2. Java c# qt c++1 1.3 ...
- Atitit gui控件定位解决方案
Atitit gui控件定位解决方案 1.1. 但是AUTOIT没有找图功能..可以请大侠们写一份这个UDF出来吗?1 1.2. ahk1 1.3. Java +opencv 模板匹配2 1.1. 但 ...
随机推荐
- Nginx负载均衡的详细配置及使用案例详解.
感谢看过这一些列博文和评论的小伙伴, 我把自己所看到的学到的拿到这里来分享是想和大家一起学习进步, 想听听园友给出的意见, 也是对自己学习过程的一个总结. 技术无止境, 我们仍需努力! 1,话不多说, ...
- 不care小米,梁军坦言微鲸才是乐视最大对手
除了每天毫无悬念地上头条和陷入困境的生态帝国之外,乐视还要继续操心着它的对手们."挑事儿"的小米已经不足为惧,后起之秀微鲸成了一个令它"头疼"的所在.因为,不仅 ...
- SQL Server 2014新功能PPT
本篇文章是我在公司内部分享SQL Server 2014新功能的PPT,在本PPT中我详细描述了SQL Server除了BI方面的新功能,以及提供了大量的测试.希望对大家有帮助. 请点 ...
- 访问外网 ML2 的配置 - 每天5分钟玩转 OpenStack(103)
通过 router 可以实现位于不同 vlan 中的 instance 之间的通信. 接下来要探讨的问题是 instance 如何与外部网络通信. 这里的外部网络是指的租户网络以外的网络. 租户网络是 ...
- EntityFramework 7 更名为EntityFramework Core(预发布状态)
前言 最近很少去学习和探索新的东西,尤其是之前一直比较关注的EF领域,本身不太懒,但是苦于环境比较影响自身的心情,所以迟迟没有下笔,但是不去学习感觉在精神层面缺少点什么,同时也有园友说EF又更新了,要 ...
- 小菜学习Winform(五)窗体间传递数据
前言 做项目的时候,winfrom因为没有B/S的缓存机制,窗体间传递数据没有B/S页面传递数据那么方便,今天我们就说下winfrom中窗体传值的几种方式. 共有字段传递 共有字段传递实现起来很方便, ...
- 构建自己的PHP框架--构建缓存组件(2)
上一篇博客中使用文件实现了缓存组件,这一篇我们就使用Redis来实现一下,剩下的如何使用memcache.mysql等去实现缓存我就不一一去做了. 首先我们需要安装一下 redis 和 phpredi ...
- geotrellis使用(十四)导出定制的GeoTiff
Geotrellis系列文章链接地址http://www.cnblogs.com/shoufengwei/p/5619419.html 目录 前言 需求说明 实现方案 总结 一.前言 最 ...
- iOS开发使用半透明模糊效果方法整理
虽然iOS很早就支持使用模糊效果对图片等进行处理,但尤其在iOS7以后,半透明模糊效果得到大范围广泛使用.包括今年最新发布的iOS8也沿袭了这一设计,甚至在OS X 10.10版Yosemite中也开 ...
- Cesium原理篇:3最长的一帧之地形(2:高度图)
这一篇,接着上一篇,内容集中在高度图方式构建地球网格的细节方面. 此时,Globe对每一个切片(GlobeSurfaceTile)创建对应的TileTerrain类,用来维 ...