用于大型程序的工具 --异常处理[续1] 四.又一次抛出 有可能单个catch不能全然处理一个异常.在进行了一些校正行动之后,catch可能确定该异常必须由函数调用链中更上层的函数来处理,catch能够又一次抛出将异常传递给函数调用链中更上层的函数.又一次抛出是后面不跟类型或表达式的一个throw: throw; 空throw语句将又一次抛出异常对象,它仅仅能出如今catch或从catch调用的函数中.假设在处理代码不活动时碰到空throw,就调用terminate函数. 尽管又一次抛出不指定自…
用于大型程序的工具 --异常处理 引言: C++语言包括的一些特征在问题比較复杂,非个人所能管理时最为实用.如:异常处理.命名空间和多重继承. 相对于小的程序猿团队所能开发的系统需求而言,大规模编程[往往涉及数千万行代码]对程序设计语言的要求更高.大规模应用程序往往具有下列特殊要求: 1.更严格的正常运转时间以及更健壮的错误检測和错误处理.错误处理常常必须跨越独立开发的多个子系统进行[异常处理]. 2.能够用各种库(可能包括独立开发的库)构造程序[命名空间]. 3.能够处理更复杂的应用概念[多重…
用于大型程序的工具 --多重继承与虚继承 引言: 大多数应用程序使用单个基类的公用继承,可是,在某些情况下,单继承是不够用的,由于可能无法为问题域建模,或者会对模型带来不必要的复杂性. 在这些情况下,多重继承能够更直接地为应用程序建模.多重继承是从多于一个直接基类派生类的能力,多重继承的派生类继承其全部父类的属性. 一.多重继承 1.定义多个类 为了支持多重继承,扩充派生列表: class Bear : public ZooAnimal { //... }; 以支持由逗号分隔的基类列表: cla…
用于大型程序的工具 --命名空间 引言: 在一个给定作用域中定义的每一个名字在该作用域中必须是唯一的,对庞大.复杂的应用程序而言,这个要求可能难以满足.这样的应用程序的全局作用域中一般有很多名字定义.由独立开发的库构成的复杂程序更有可能遇到名字冲突 -- 相同的名字既可能在我们自己的代码中使用,也可能(更常见地)在独立供应商提供的代码中使用. 库倾向于定义很多全局名字 -- 主要是模板名.类型名或函数名.在使用来自多个供应商的库编写应用程序的时候,这些名字中有一些差点儿不可避免地会发生冲突,这样…
大规模应用程序的特殊要求包括: 在独立开发的子系统之间协同处理错误:异常处理 使用各种库(可能包含独立开发的库)进行协同开发:命名空间 对比较复杂的应用概念建模:多重继承 18.1 异常处理 异常处理机制允许程序在运行时对出现的问题进行通信并处理 异常使得可将问题的检测和解决分离,一部分用于检测问题的出现,另一部分用于解决问题 18.1.1 抛出异常 通过抛出一条表达式来引发一个异常,被抛出表达式的类型和当前的调用链共同决定哪段处理代码被用于处理该异常. 被选中的处理代码是当前调用链中与抛出对象…
1. 异常处理 异常以类似于将实參传递给函数的方式抛出和捕获.异常可以是可传给非引用实參的随意实參的类型,这意味着必须可以复制该类型的对象. 当抛出一个表达式的时候,被抛出对象的静态编译时类型将决定异常对象的类型. 抛出指针一般是个坏主意. 栈展开:沿着嵌套函数调用链继续向上,直到为异常找到一个catch子句. 栈展开期间.释放局部对象所用的内存并执行类类型局部对象的析构函数. 一个块能够通过new动态分配内存.假设该块因异常而退出.编译器不会删除该指针.已分配的内存将不会释放. 析构函数应该从…
C++大规模程序设计至少存在三个特殊要求: 错误处理 库的引入 复杂建模 以上三种对应C++语言的三种特性:异常处理.命名空间.多重继承. 异常处理 异常处理机制是一种允许偷懒的工具,在出现非正确的情况时,进行错误之间的协作处理.异常使得问题检测和解决过程分离开来.程序的一部分检测问题,另一个部分专门解决问题. 抛出异常 在C++中通过抛出一个表达式来引发异常,被抛出的表达式的类型以及当前调用链共同决定哪个部分来处理异常.被选择的部分是调用链和抛出类型匹配最近的处理部分.根据抛出类型的类型及其内…
<C++ Primer 4th>读书笔记 相对于小的程序员团队所能开发的系统需求而言,大规模编程对程序设计语言的要求更高.大规模应用程序往往具有下列特殊要求: 1. 更严格的正常运转时间以及更健壮的错误检测和错误处理.错误处理经常必须跨越独立开发的多个子系统进行. 2. 能够用各种库(可能包含独立开发的库)构造程序. 3. 能够处理更复杂的应用概念. C++ 中有下列三个特征分别针对这些要求:异常处理.命名空间和多重继承. 异常处理 通过异常我们能够将问题的检测和问题的解决分离,这样程序的问题…
面向对象编程 --句柄类与继承[续] 三.句柄的使用 使用Sales_item对象能够更easy地编写书店应用程序.代码将不必管理Item_base对象的指针,但仍然能够获得通过Sales_item对象进行的调用的虚行为. 1.比較两个Sales_item对象 在编写函数计算销售总数之前,须要定义比較Sales_item对象的方法.要用Sales_item作为关联容器的keyword,必须能够比較它们.关联容器默认使用keyword类型的小于操作符,可是假设给Sales_item定义小于操作符,…
独立开发的子系统间协同处理错误的能力 使用各种库(可能包含独立开发的库进行协同开发的能力) 对比复杂的应用概念建模的能力 异常处理 异常将问题的检测和解决过程分离开 当执行一个throw之后,程序控制权转移到了与之匹配的catch 控制权的转移有两个重要的含义 1沿着调用链的函数可能会提早退出 2一旦程序开始执行异常处理代码,则沿着调用链创建的对象将被销毁 栈展开 栈展开,层层往外查找.如果找到了匹配的catch,则进入执行代码.执行完catch之后,找到与try块关联的最后一个catch子句之…
题外话:一工作起来就没有大段的时间学习了,如何充分利用碎片时间是个好问题. 接  C++ Primer学习笔记(一)   27.与 vector 类型相比,数组的显著缺陷在于:数组的长度是固定的,无法直接复制和赋值(Wrong:int arr2[]=arr1;),而且程序员无法知道一个给定数组的长度---没有size操作(但可以间接获取).     只有当性能测试表明使用 vector 无法达到必要的速度要求时,才使用数组.            没有所有元素都是引用的数组.        数组…
C++中函数是一种类型!C++中函数是一种类型!C++中函数是一种类型! 函数名就是变量!函数名就是变量!函数名就是变量! (---20160618最新消息,函数名不是变量名...囧) (---20160714最新消息,C++没有函数类型...囧) (---但是,我认为把它们当成类型和变量更容易理解!!!) 重要的事情要说三遍... 接 C++ Primer学习笔记(二) 类的构造函数 与类同名,且无返回类型. 同类的成员函数一样,也可以在类中声明,在类外定义. 格式: 类名(): 成员1(成员…
Linux进程线程学习笔记:运行新程序                                         周银辉 在上一篇中我们说到,当启动一个新进程以后,新进程会复制父进程的大部份上下文并接着运行父进程中的代码,如果我们使新进程不运行原父进程的代码,转而运行另外一个程序集中的代码,这就相当于启动了一个新程序.这里的代码我们可以理解成一个可执行程序. 所以,要运行一个新程序,需要最基本的两步: 1,创建一个可运行程序的环境,也就是进程. 2,将环境中的内容替换成你所希望的,也就是用…
Lua学习笔记4. coroutine协同程序和文件I/O.错误处理 coroutine Lua 的协同程序coroutine和线程比较类似,有独立的堆栈.局部变量.独立的指针指令,同时又能共享全局变量 但coroutine又和多线程程序不同,首先一个多线程程序可以同时运行多个单线程,但协同程序只能串行,也就是说同一时刻只能有一个协同程序在运行,并且这个协同程序将一直占用处理器直到被显式的挂起. 基本的函数 coroutine.create(f) 创建一个协同程序,返回coroutine, f是…
微信小程序开发:学习笔记[7]——理解小程序的宿主环境 渲染层与逻辑层 小程序的运行环境分成渲染层和逻辑层. 程序构造器…
Swift 2.0学习笔记(Day4)——用Playground工具编写Swift 原创文章,欢迎转载.转载请注明:关东升的博客 用Playground编写Swift代码目的是为了学习.测试算法.验证想法和可视化看到运行结果,不是为了使最终的程序编译和发布. Playground程序运行①区域是代码编写视图:②区域是运行结果视图:③区域是时间轴视图:④区域是控制台视图,使用print等日志函数将结果输出到控制台,可以通过左下角的      按钮隐藏和显示控制台. 默认情况下时间轴视图是不显示的,…
参考资料: 1. <Windows Internals> 2. Windows Drive Kit 3. Microsoft Windows SDK 4. WDK下载地址 知识点: 1. Windows Drive Kit(WDK)是微软提供的用于Windows平台的设备驱动软件开发工具集.它包括:文档.实例.Build环境和为驱动开发人员提供的开发工具.早期,它以Windows Driver Development Kit(DDK)闻名,支持Windows Driver Model(WDM)…
始终对C++念念不忘,看过 一个32岁入门的70后程序员给我的启示  之后,心情激荡,更是一发不可收拾. 认真地说,我不是一个执着的人,见异思迁,好读书而不求甚解,兼之情绪化(~~ 某些方面),于是怒下决心要掌握C++,于是有了这个笔记. 比较欣慰的是,可能认真学了Java,又看过不少的资料,所以对编程这回事多少有了自己的理解,所以现在学起来如有神助.可见编程语言都是相通的. 1.C++ 并没有直接定义进行输入或输出(IO)的任何语句,这种功能是由标准库提供的.如iostream标准库.    …
个人笔记:C语言程序 函数 语句 输入输出对象 标识符 关键字 函数 一个C语言源程序,是由一个或多个函数定义顺序组成的,其中必须有一个函数名为main的主函数.C语言源程序中的函数是指完成特定数据处理任务.功能上独立的一个程序段.任何一个函数定义都是由函数首部和函数体构成,函数体必须用大括号"{"和"}"括起来,函数体必须紧接在函数首部之后.函数体的成分是由0或多条变量组成的定义序列:1条或多条语句顺序组成的语句序列. 函数定义=函数首部+函数体 int main…
阅读本文大概需要 6 分钟 一个项目随着功能开发越来越多,项目必然越来越大,工程管理成本也越来越高,后期维护成本更高.如何更好的组织管理工程,是非常重要的 今天我们来学习下 Qt Creator 是如何组织管理这么庞大的一个项目工程的 QMake 多工程管理方法 我们知道 Qt 采用 qmake语法进行组织管理工程结构,想要更好的学习管理一个工程需要你了解基本的qmake语法 在Qt当中,一般以xx.pro结尾的文件是某个工程文件,我们只要打开该文件即可打开该文件管理的工程 单工程基本用法 比如…
序: 为了重新扎扎实实地再深入学习一遍C++,我选择了C++ Primer这本经典.又开了这个系列的随笔,用于记录学习过程中遇到的一些有趣的问题和心得.同时,也是想通过写随笔的方式督促自己不断进步,争取成为一名精通C++编程技巧和编程思想的好程序猿O(∩_∩)O嗯! 正文: 这两天将C++ Primer的第一章抽时间看完了,阅读过程中,遇到几个有趣的问题,值得记录: 一.用Windows命令行编译自己的c或者cpp 网上有大把的这个问题的教程,总结下来,大同小异.尽管不同的vs(vc)版本一些细…
Intel App Framework(原jqMobi)是用来开发hybrid app的开源免费框架,被intel收编之后发布了最新的2.1版本,最近正在学习.af的所谓程序结构,就是AF网页的架构,大家直接看代码就都清楚了(因为我加了注释:^_^). <!doctype html> <!-- 肯定必须是html5页面--> <html> <head>     <meta charset="utf-8"> <!-- 移动…
记录下自己掌握不清楚的概念和用法... Day 1 endl:具有输出换行的效果,并刷新与设备相关联的缓冲区. 注:在调试程序过程中插入的输出语句都应刷新输出流,否则可能会造成程序崩溃,将会导致程序出错位置的错误判断. buffer(缓冲区):输出缓冲区通常必须显式刷新以强制输出缓冲区内容.默认情况下,读cin会刷新cout:当程序正常结束时,cout也被刷新. cerr:默认情况下,输出cerr不缓冲.通常用于不是程序正常逻辑部分的错误信息或其他输出. clog:默认情况下,写到clog时是带…
为了加快学习速度,和使程序更加easy理解.  我把sampler tutorial里面的一个样例 的固定代码和常常修改的代码经过简单的类的封装了一下. 以后学习的时候就能够仅仅在还有一个文件写render渲染代码和fx着色器代码了 D3DBase.h  基本框架代码 #include <windows.h> #include <d3d11.h> #include <d3dx11.h> #include <d3dcompiler.h> #include &l…
上篇Go学习笔记(四)Go自动化测试框架 1.go build 这个命令可以直接使用,也可以带上代码包或源码文件使用. 如果是直接使用,表示试图编译当前目录所对应的代码包,如果当前目录不是一个有效的代码包(包含在 $GOPATH/src 目录下)则会报错:如果带上代码包名,则表示编译指定的代码包:如果带上源码文件,则表示编译指定源码文件. GO语言的源码文件分为三类,包括命令源码文件.库源码 文件和测试源码文件.如果编译的是命令源码文件,或包含命令源码文件的包(main包)时,编译通过后会生成可…
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4085684.html [正文] 这一周状态不太好,连续打了几天的点滴,所以博客中断了一个星期,现在继续. 我们在之前的几篇文章中学习了JDBC对数据库的增删改查.其实在实际开发中,一般都是使用第三方工具类,但是只有将之前的基础学习好了,在使用开源工具的时才能得心应手.如果对JDBC基础不太清楚,或…
作者:ssslinppp       异常处理请参考前篇博客:<[Spring学习笔记-MVC-15]Spring MVC之异常处理>http://www.cnblogs.com/ssslinppp/p/4610043.html : 在遇到404错误时,如何跳转到404界面?下面将介绍之. 404.jsp 在web.xml中定义 <error-page> <exception-type>java.lang.Throwable</exception-type>…
STL实践与分析 --容器的综合应用:文本查询程序 引言: 本章中最重点的实例.由于不须要用到multiset与multimap的内容.于是将这一小节提到了前面.通过这个实例程序,大师分析问题的智慧,大师的编程风格.大师对程序的控制能力,由此可见一斑.因此.我对这一小节的内容差点儿不做改动.或仅仅做非常小的更改(由于有些东西不同人有不同的理解).搬出来.以供大家细致品读. 要求: 我们的程序将读取用户指定的随意文本文件,然后同意用户从该文件里查找单词.查询的结果是该单词出现的次数,并列出每次出现…
0 剖析ASP.NET应用程序 用户运行ASP.NET应用程序,不是直接运行,而是使用浏览器(比如IE)通过HTTP请求一个特定的URL(如http://www.mysite.com/mypage.aspx).这个请求由Web服务器接收.在VS中调试应用程序时,你使用的使本地的测试服务器.而部署应用程序时,使用IIS Web服务器.Web服务器把请求传送给ASP.NET工作者进程,ASP.NET工作者进程会根据虚拟目录把代码的执行隔离到不同的应用程序域.同一个虚拟目录(或它的某个子目录)中的网页…
一.string    #include <string>  using std::string    初始化函数:    string s1;        默认构造函数 s1 为空串  string s2(s1);   将 s2 初始化为 s1 的一个副本  string s3("value");将 s3 初始化为一个字符串字面值副本  string s4(n, 'c');将 s4 初始化为字符 'c' 的 n 个副本    string s4(5,'6')  6666…