delphi高手突破之异常及错误处理
来源:互联网 发布:大脚 mac 编辑:程序博客网 时间:2024/04/28 23:44
什么是异常?为什么要用它?
所谓“异常”是指一个异常类的对象。Delphi的VCL中,所有异常类都派生于Exception类。该类声明了异常的一般行为、性质。最重要的是,它有一个Message属性可以报告异常发生的原因。
但需要强调的是,异常用来标志错误发生,却并不因为错误发生而产生异常。产生异常仅仅是因为遇到了raise,在任何时候,即使没有错误发生,raise都将会导致异常的发生。异常的发生,仅仅是因为raise,而非其他!采用抛出异常以处理意外情况,则可以保证程序主流程中的所有代码可用,而不必加入繁杂的判断语句。例如,函数A抛出异常:
function A() : Integer;vatpFile : textfile;begin…… // 一些代码pFile := SomeFunctionToOpenAnFile();if pFile = nil thenraise Exception.Create(′Open file failed!′); // 文件打开失败抛出异常Read(pFile, ……); // 读文件…… // 其他一些对文件的操作,此时可以保证文件指针有效end;函数A的代码使得对文件打开的出错处理非常简单。如果打开文件失败,则抛出一个Exception类的异常对象,函数立刻返回,从而保护了以下对文件指针的操作不被执行。抛出的异常也需要被捕获和处理。假设函数B调用了函数A,要捕获这个文件打开失败的异常,就需要在调用A之前先预设一个陷阱,这个陷阱就是所谓的“try…except块”。先看一下函数B的代码:
procedure B();begin…… // 一些代码tryA(); // 调用ASomeFunctionDependOnA(); // 依赖于A的结果的函数ExceptShowMessage(′some error occured′); // 嘿嘿,掉进来了,发生异常End;…… // 继续的代码end;
A抛出的异常,会被B所设的try…except所捕获。一旦捕获到异常,就不再执行之后的敏感代码,而是立刻跳至except块执行错误处理,处理完成后再继续执行整个try块之后的代码。程序流程的控制权被留在了函数B。
- delphi高手突破之异常及错误处理
- 《Delphi高手突破》
- Delphi--异常和错误处理
- 014_《Delphi高手突破》
- 【读书笔记】【Delphi高手突破】TCanvas
- delphi 异常及异常处理机制
- delphi VCL研究之消息分发机制-delphi高手突破读书笔记
- 《Delphi高手突破》学习笔记(一)
- 《Delphi高手突破》学习笔记(二)
- C++异常及错误处理
- PHP 错误及异常处理
- delphi高手突破学习笔记之面向对象类和对象的本质
- 【转】PHP错误处理及异常处理
- PHP 错误处理及异常处理
- 突破Java异常处理规则
- Delphi 中自定义异常及异常处理的一般方法
- PHP自学之路----错误及异常处理机制、错误日志
- 异常和错误处理(基于Delphi/VCL)
- mkfs.ext3 && fdisk
- 求特征值 特征向量1
- ZOJ1051 A New Growth Industry
- paper issues
- 表单处理、HTTP协议和GET/POST
- delphi高手突破之异常及错误处理
- 往joomla文章添加JS代码的方法
- 【编译原理】第一章 引论
- [备忘]收集的一些题集(更新中)
- python sqlite多线程编程
- grinder 测试HSF 协议
- IT研究员是产品经理中的工程师和工程师中的计算机专家——geek
- 单片机反汇编程序员居然沦落为电工!
- 关于DirectShow中摄像头的帧率设置