文档详情

c++ 异常处理.ppt

发布:2017-05-27约7.76千字共35页下载文档
文本预览下载声明
11.1异常处理的机制--异常处里概述 异常:程序执行时遇到的任何错误情况或意外行为 异常处理: 异常处理就是指当程序出现这些错误后,给与恰当处理,为程序提供退出的安全通道 11.1异常处理的机制--异常处里概述 异常可能性: 代码或调用的代码(如共享库)中有错误; 操作系统资源不可用; 公共语言运行库遇到意外情况(如无法验证代码); 用户的错误操作等 11.1异常处理的机制 --传统的错误处理方法 #includeiostream #includefstream using namespace std; void main() { char str[40]; char msg[]=Connot open infile--hello.txt; ifstream fin(hello.txt); if(!fin) { coutmsgendl; } 11.1异常处理的机制 --传统的错误处理方法 else { finstr; coutstrendl; fin.close(); } return; }(T1.cpp) 11.1异常处理的机制 --传统的错误处理方法 弊端: 例如函数返回NULL代表出现异常,但是如果函数确实要返回NULL这个正确的值时就会出现混淆; 可读性降低,将程序代码与处理异常的代码混在一起; 由调用函数的程序来分析错误,这就要求客户程序员对库函数有很深的了解 。 11.1异常处理的机制 --传统的错误处理方法 要求: 需要更加灵活、程序可读性强、降低程序员劳动强度的处理方式。 C++ 异常处理机制: 在于当遇到异常时,系统不是马上终止运行,而是允许用户排除错误,继续运行程序,至少给出出错提示信息。 在大型复杂的软件系统中,函数之间有明显的分工和复杂的调用关系,发现错误的函数一般不具备处理错误的能力。这时只能导致一个异常,并抛出异常,让它的调用者捕获这个异常并处理,如果调用者也不能处理就传递给它的上级调用者,这样一直上传到能处理为止。如果始终没有处理就上交到C++运行系统,运行系统调用abort函数强行终止整个程序。 11.1异常处理的机制—异常处理机制 11.2异常的实现—异常处理过程 C++语言中: try、throw和catch语句就是用于实现异常处理的机制的程序子句: 1. 确定要保护的代码段 确定要保护的代码段(敏感代码)的工作由try子句来实现。如果预料某段代码可能出现异常,就将此段代码放在try语句块中。这段代码在运行时真的出现了错误,就通过其中的throw语句抛掷异常对象的类型和异常的内容。 11.2异常的实现—异常处理过程 2. 抛掷异常 抛掷异常的工作由throw子句来实现,在受保护的可能产生异常的语句中进行错误检测,如有异常就通过throw语句抛掷异常对象的类型和异常的内容。 3. 定义异常处理程序 通过throw抛掷的异常对象和异常内容,被catch子句捕获,并处理捕获的异常对象。即将出现异常后对异常的处理语句放在catch语句块中,捕捉异常并处理,catch子句起到了异常处理器的作用。 11.2异常的实现—异常处理过程 #includeiostream #includefstream #includestring using namespace std; void main() { char str[40]; char msg[]=Connot open infile--hello.txt; ifstream fin(hello.txt); try{ if(!fin) throw string(msg); } 11.2异常的实现—异常处理过程 catch(string s) { coutsendl; return; } finstr; coutstrendl; fin.close(); return; }(T3.CPP) 11.2异常的实现—异常处理过程 执行过程如下: 1、通过正常的控制顺序执行到try语句,进入try块内执行保护段程序。 2、在try语句块中,如果try中没有异常,后面的catch语句不执行,继续执行catch后的程序语句。例中如果fin不为空(NULL),则try后的catch子句就不执行,继续执行catch语句块后的程序。如有多个catch语句块时,跳到最后一个catch语句块的后面执行。 3、在try语句块中,有异常时,就通过thr
显示全部
相似文档