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://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.异常处理 嵌套  冗长的解决方案的更多相关文章

  1. atitit..代码生成流程图 流程图绘制解决方案 java  c#.net  php v2

    atitit..代码生成流程图 流程图绘制解决方案 java  c#.net  php v2 1.1. Markdown 推荐,就是代码和flow都不能直接使用.1 1.2. Java code2fl ...

  2. Atitit 桌面软件跨平台gui解决方案 javafx webview

    Atitit 桌面软件跨平台gui解决方案 javafx webview 1.1. 双向js交互1 1.2. 新弹出窗口解决1 1.3. 3.文档对象入口dom解析1 1.4. 所以果断JavaFX, ...

  3. Atitit. 单点登录sso 的解决方案 总结

    Atitit.  单点登录sso 的解决方案 总结 1. 系统应用场景and SSO模式选型 2 2. 系统应用的原则与要求 2 2.1. 开发快速简单::绝大部分系统来说,开发快速简单为主 2 2. ...

  4. atitit.跨架构 bs cs解决方案. 自定义web服务器的实现方案 java .net jetty  HttpListener

    atitit.跨架构 bs cs解决方案. 自定义web服务器的实现方案 java .net jetty  HttpListener 1. 自定义web服务器的实现方案,基于原始socket vs   ...

  5. UIScrollView嵌套的完美解决方案

    UIScrollView嵌套的完美解决方案 做iOS开发,不可避免的会遇到UIScrollView的嵌套问题,之前也曾遇到过,吭哧吭哧做完了,效果不理想,和产品大战好几回合,就那样了.不可避免的,又一 ...

  6. Atitit 翻页功能的解决方案与版本历史 v4 r49

    Atitit 翻页功能的解决方案与版本历史 v4 r49 1. 版本历史与分支版本,项目版本记录1 1.1. 主干版本历史1 1.2. 分支版本  项目版本记录.1 2. Easyui 的翻页组件2 ...

  7. Atitit.pagging  翻页功能解决方案专题 与 目录大纲 v3 r44.docx

    Atitit.pagging  翻页功能解决方案专题 与 目录大纲 v3 r44.docx 1.1. 翻页的重要意义1 1.2. Dep废弃文档   paip.js翻页分页pageing组件.txt1 ...

  8. Atitit 软件项目系统托盘图标解决方案

    Atitit 软件项目系统托盘图标解决方案 1.1. Nodejs   node-webkit还实现了本地化的API,例如菜单栏,系统的托盘图标支持1 1.2. Java c# qt c++1 1.3 ...

  9. Atitit gui控件定位解决方案

    Atitit gui控件定位解决方案 1.1. 但是AUTOIT没有找图功能..可以请大侠们写一份这个UDF出来吗?1 1.2. ahk1 1.3. Java +opencv 模板匹配2 1.1. 但 ...

随机推荐

  1. Nginx负载均衡的详细配置及使用案例详解.

    感谢看过这一些列博文和评论的小伙伴, 我把自己所看到的学到的拿到这里来分享是想和大家一起学习进步, 想听听园友给出的意见, 也是对自己学习过程的一个总结. 技术无止境, 我们仍需努力! 1,话不多说, ...

  2. 不care小米,梁军坦言微鲸才是乐视最大对手

    除了每天毫无悬念地上头条和陷入困境的生态帝国之外,乐视还要继续操心着它的对手们."挑事儿"的小米已经不足为惧,后起之秀微鲸成了一个令它"头疼"的所在.因为,不仅 ...

  3. SQL Server 2014新功能PPT

        本篇文章是我在公司内部分享SQL Server 2014新功能的PPT,在本PPT中我详细描述了SQL Server除了BI方面的新功能,以及提供了大量的测试.希望对大家有帮助.     请点 ...

  4. 访问外网 ML2 的配置 - 每天5分钟玩转 OpenStack(103)

    通过 router 可以实现位于不同 vlan 中的 instance 之间的通信. 接下来要探讨的问题是 instance 如何与外部网络通信. 这里的外部网络是指的租户网络以外的网络. 租户网络是 ...

  5. EntityFramework 7 更名为EntityFramework Core(预发布状态)

    前言 最近很少去学习和探索新的东西,尤其是之前一直比较关注的EF领域,本身不太懒,但是苦于环境比较影响自身的心情,所以迟迟没有下笔,但是不去学习感觉在精神层面缺少点什么,同时也有园友说EF又更新了,要 ...

  6. 小菜学习Winform(五)窗体间传递数据

    前言 做项目的时候,winfrom因为没有B/S的缓存机制,窗体间传递数据没有B/S页面传递数据那么方便,今天我们就说下winfrom中窗体传值的几种方式. 共有字段传递 共有字段传递实现起来很方便, ...

  7. 构建自己的PHP框架--构建缓存组件(2)

    上一篇博客中使用文件实现了缓存组件,这一篇我们就使用Redis来实现一下,剩下的如何使用memcache.mysql等去实现缓存我就不一一去做了. 首先我们需要安装一下 redis 和 phpredi ...

  8. geotrellis使用(十四)导出定制的GeoTiff

    Geotrellis系列文章链接地址http://www.cnblogs.com/shoufengwei/p/5619419.html 目录 前言 需求说明 实现方案 总结 一.前言        最 ...

  9. iOS开发使用半透明模糊效果方法整理

    虽然iOS很早就支持使用模糊效果对图片等进行处理,但尤其在iOS7以后,半透明模糊效果得到大范围广泛使用.包括今年最新发布的iOS8也沿袭了这一设计,甚至在OS X 10.10版Yosemite中也开 ...

  10. Cesium原理篇:3最长的一帧之地形(2:高度图)

           这一篇,接着上一篇,内容集中在高度图方式构建地球网格的细节方面.        此时,Globe对每一个切片(GlobeSurfaceTile)创建对应的TileTerrain类,用来维 ...