大规模应用程序往往具有下列特殊要求
异常处理--1.更严格的正常运转时间以及更简装的错误检测和错误处理
错误处理经常必须跨越独立开发的多个子系统进行
命名空间--2.能够用各种库构造程序
多重继承--3.更够处理更复杂的应用概念
异常处理
使用异常梳理,程序中独立开发的各部分能够就程序执行期间出现的问题互相通信
程序的一个部分能够检测出本部分无法解决的问题,文问题检测
部分可以将问题传递给 转呗处理文繁体的其他部分
抛出一个对象给处理代码,通过这个对象的类型和内容
两个部分就能够就出现什么问题进行通信
catch的数据类型需要与throw出来的数据类型相匹配。
catch能够捕获多种数据类型的异常对象,所以它给程序员一种对异常对象更好的控制手段,使开发的软件系统有很好的可靠性
void func()
{
try{
//这里的程序代码完成真正复杂计算工作,这些代码在执行过程中
//有可能抛出dataType1 ,type2 type3类型的异常对象
}
catch( datatype1 & d1 )
{
}
catch( type2 & d2 )
{
}
catch( type 3 d3 )
{
}
catch( ... ){}//这是为了有更好的安全性和可靠性,避免上面的try block抛出了其他未考虑的异常对象时导致的程序
}
抛出类类型的异常
异常是通过抛出对象而引发的,该对象的类型决定应该激活那个处理代码。
异常以类似于将实参传递给函数的方式抛出和捕获
异常可以是可传给非引用形参的任意类型的对象
执行throw的时候,不会执行跟在throw后面的语句,
而是将控制从throw转移到匹配的catch, 该catch可以同一函数
中局部catch,也可以在直接或间接调用发生异常函数的另一个函数中
处理异常的时候会释放局部存储,所抛出的对象就不能再局部存储
而是用throw表达式初始化的一个称为异常对象的特殊对象。
异常对象由编译器管理。
而且保证驻留在可能被激活的任意catch都可以访问的空间。
异常对象将传递给对应的catch,并在处理完全之后撤销
异常对象通过复制呗抛出表达式的结果创建,该结果必须是可以复制的类型。
异常对象与继承
基类型都来自某个继承层次,标准异常定义在一个继承层次中
知道throw表达式的形式如何与因进程而相关的类型相互影响
异常与指针
对指针解引用的结果是一个对象,其类型与指针的类型匹配
如果指针指向继承层次中的一种类型,指针无论对象那个实例类型是什么,异常对象那
对指针解引用的结果是一个对象,其类型和指针的类型匹配。
如果指针指向继承层次中的一种类型,指针所指向的类型就有可能与指针的类型不同
无论对象的实际类型是什么,异常对象的类型都与指针的