delphi try except语句 和 try finally语句用法以及区别

合集下载

对python中的try、except、finally执行顺序详解

对python中的try、except、finally执行顺序详解

对python中的try、except、finally执⾏顺序详解如下所⽰:def test1():try:print('to do stuff')raise Exception('hehe')print('to return in try')return 'try'except Exception:print('process except')print('to return in except')return 'except'finally:print('to return in finally')return 'finally'test1Return = test1()print('test1Return : ' + test1Return)输出:to do stuffprocess exceptto return in exceptto return in finallytest1Return : finally在 try 中 raise⼀个异常,就⽴刻转⼊ except 中执⾏,在except 中遇到 return 时,就强制转到 finally 中执⾏,在 finally 中遇到 return 时就返回def test2():try:print('to do stuff')print('to return in try')return 'try'except Exception:print('process except')print('to return in except')return 'except'finally:print('to return in finally')return 'finally'test2Return = test2()print('test1Return : ' + test2Return)输出:to do stuffto return in tryto return in finallytest2Return : finally这⾥在 try 中没有抛出异常,因此不会转到 except 中,但是在try 中遇到return时,也会⽴即强制转到finally中执⾏,并在finally中返回test1和test2得到的结论:⽆论是在try还是在except中,遇到return时,只要设定了finally语句,就会中断当前的return语句,跳转到finally中执⾏,如果finally中遇到return语句,就直接返回,不再跳转回try/excpet中被中断的return语句def test3():i = 0try:i += 1print('i in try : %s'%i)raise Exception('hehe')except Exception:i += 1print('i in except : %s'%i)return ifinally:i += 1print ('i in finally : %s'%i )print('test3Return : %s'% test3())输出:i in try : 1i in except : 2i in finally : 3test3Return : 2def test4():i = 0try:i += 1return ifinally:i += 1print ('i in finally : %s'%i )print('test4Return : %s' % test4())输出i in finally : 2test4Return : 1test3和test4得到的结论:在except和try中遇到return时,会锁定return的值,然后跳转到finally中,如果finally中没有return语句,则finally执⾏完毕之后仍返回原return点,将之前锁定的值返回(即finally中的动作不影响返回值),如果finally中有return语句,则执⾏finally中的return语句。

Delphi异常处理tryexcept语句和tryfinally语句用法以及

Delphi异常处理tryexcept语句和tryfinally语句用法以及

Delphi 异常处理try except 语句和try finally 语句用法以及Delphi异常处理tryexcept语句和tryfinally语句用法以及区别一直写程序都没管他们,也尽量很少用,今天终于想把他给弄个明白,在网上找来,记下!主要是前面小部分,后面的是详细说明(很啰嗦!)一、异常的来源在Delphi的应用程序中,下列的情况都比较有可能产生异常。

(1)文件处理(2)内存分配(3)Windows资源(4)运行时创建对象和窗体(5)硬件和操作系统冲突二、异常的处理(1)try…except…end;在try体内的代码发生异常时,系统将转向except部分进行异常的处理。

这是Delphi处理异常的最基本的方式之一。

(2)try…finally…end;这种异常处理结构一般用于保护Windows的资源分配等方面,它确保了无论try体内的代码是否发生异常,都需要由系统进行最后的统一处理的一些Windows对象的正确处理。

和try…except…end不同,该结构的finally部分总被执行。

(3)不存在try…except…finally…end结构来既处理异常,又保护资源分配的结构,但是,try…except…end结构允许嵌套到try…finally…end结构中,从而实现既处理异常,又保护资源的分配。

三、异常的精确处理(1)定义一个异常。

在Delphi中,每个异常都是Exception[1]类的一个派生类[2]。

因此,定义一个异常就是定义一个Exception类的派生类。

typeEMyException=class(Exception);当然,基类可以是Exception或者Exception的任何一个任何层次的派生类。

(2)在程序中抛出一个异常。

根据不同的情况抛出异常是使用异常的最基本的模式。

在Delphi中,由raise语句来实现。

【语法】raise异常类.Create('异常的缺省说明');(3)在try…except…end中更加精确的捕捉异常。

Delphi异常处理机制

Delphi异常处理机制

Delphi异常处理机制Delphi的异常处理⽅式有两种:try...except...end;try...finally...end;。

try...except主要⽤于捕获异常,只有出现异常的时候才会执⾏except部分。

try...finally主要⽤于资源释放,⽆论try语句块是否有异常都会执⾏finally语句块。

如下⾯的代码:tryraise exception.create('发现异常'); //在try语句块中抛出⼀个异常excepton e:Exception do//捕获异常beginshowMessage(e.message);end;end;⽤try..except是不会出现异常提⽰信息的对话框,需要⾃⼰主动去show出异常信息。

⽽try..finally.则会出现异常提⽰信息。

try..except和try..finally可以相互嵌套。

使⽤on e:Exception do可以精确处理特定的异常。

Exception是所有异常类的基类,Delphi内部就定义了处理常见异常的异常类(在SysUtils单元中),也可以从Exception继承定义⾃⼰的异常类使⽤raise语句可以抛出⼀个异常:EMyException=class(Exception)end;trytryraise EMyException.Create('我⾃⼰的异常');excepton e:EMyException doshowMessage(e.message);end;finallyshowMessage('我始终被执⾏');end。

delphi finally用法

delphi finally用法

delphi finally用法在Delphi编程中,finally块是一种特殊的代码块,无论前面的代码是否出现异常,finally块中的代码总是会被执行。

这对于释放资源、关闭文件、断开数据库连接等非常重要。

本文将介绍finally块的使用方法,以及如何处理异常。

一、finally块的基本用法在Delphi中,finally块是在try...except结构之外定义的代码块。

无论前面的代码是否出现异常,finally块中的代码总是会被执行。

这意味着无论try 块中的代码是否出现异常,finally块中的代码都会被执行。

这对于释放资源、关闭文件、断开数据库连接等非常重要。

下面是一个基本的finally块的例子:```delphiprocedureTForm1.Button1Click(Sender:TObject);vari:Integer;begintry//一些可能会抛出异常的代码fori:=1to10dobeginifimod2=0thenraiseException.Create('偶数不能被2整除');end;finally//在这里放置需要执行的代码,无论前面的代码是否出现异常ShowMessage(IntToStr(i));//这将在try块中的代码执行完毕后被执行end;```在这个例子中,无论try块中的代码是否出现异常,finally块中的代码都会被执行。

这可以确保在异常发生后仍然能够正确地处理和清理资源。

二、finally块与异常处理在Delphi中,try...except结构用于捕获和处理异常。

如果try块中的代码抛出一个异常,程序将跳转到相应的except块进行处理。

如果except块中没有提供处理代码,那么程序将会终止并显示异常消息。

但是,如果except块中存在处理代码,那么程序将会跳过异常并继续执行后续的代码。

因此,使用try...except结构时需要谨慎处理异常,避免影响程序的正常执行。

Delphi编程建议遵守的规范1---缩进、各种语句的用法

Delphi编程建议遵守的规范1---缩进、各种语句的用法

Delphi编程建议遵守的规范1---缩进、各种语句的⽤法在编程时候,尤其是在⼀个⼤的团队⾥⾯,遵守统⼀的编程规范是极其重要的。

为所有的开发⼈员制定⼀个源代码书写标准,以及程序和⽂件的命名标准,使他们在编程时有⼀致的格式,这样,每个编程⼈员编写的代码能够被其他⼈理解,减少程序维护和移交的成本。

这⾥先只介绍关于Delphi语⾔的编程规范,暂时跳过⽂件、项⽬命名……1.1.关于缩进缩进能够更清晰的展⽰源码的逻辑结构,采⽤两个空格字符,不能使⽤制表符(即Tab字符)。

这是因为,制表符的宽度随着不同源码编缉⼯具及不同的设置,展⽰出来的效果不⼀样,如果空格和tab键混⽤的情况,很可能展现出来的是混乱的结构1.2.begin...end语句begin语句应该单独占⼀⾏,例如错误的⽤法for i:=0 to 10 do begin 正确的⽤法for i:=0 to 10 dobegin 本规则有⼀个特例,当begin为else语句的⼀部分时,例如if somestatement thenbegin...end;else someotherstatement begin...end; 注意:end语句总是单独⼀⾏,当begin不为else语句的⼀部分时,相应的end语句与begin语句的缩进量相同1.3.⼤⼩写规则虽然Delphi中不区分⼤⼩写,但是采⽤统⼀的⼤⼩写规则也是极其有益的,能让⼤家在看代码时不⾄于不知所措类型标识符是保留字,应当全部⼩写。

Win32 API类型常常全部⼤写,并且遵循如Windows.pas或者其他API单元中关于特定类型名的规则。

对于凄然变量名,第⼀个字母应该⼤写,其他字母则⼤⼩写交错,例⼦varsMyString : string; //保留字,全部⼩写hWindowsHandle : HWND; //Win32 API类型,全部⼤写I : Integer; //在System单元中引⽤的类型标识,特定类型名1.4.浮点型通常情况下,对于浮点数应当使⽤Double,不⿎励使⽤Real类型,因为它只是为了与⽼的Pascal代码兼容⽽保留的。

Delphi异常处理tryexcept语句和tryfin(精)

Delphi异常处理tryexcept语句和tryfin(精)

一、异常的来源在Delphi的应用程序中,下列的情况都比较有可能产生异常。

(1)文件处理(2)内存分配(3)Windows 资源(4)运行时创建对象和窗体(5)硬件和操作系统冲突二、异常的处理(1)try…except…end;在try体内的代码发生异常时,系统将转向except部分进行异常的处理。

这是Delphi处理异常的最基本的方式之一。

(2)try…finally…end;这种异常处理结构一般用于保护Windows的资源分配等方面,它确保了无论try体内的代码是否发生异常,都需要由系统进行最后的统一处理的一些Windows对象的正确处理。

和try…except…end不同,该结构的finally部分总被执行。

(3)不存在try…except…finally…end结构来既处理异常,又保护资源分配的结构,但是,try…except…end结构允许嵌套到try…finally…end结构中,从而实现既处理异常,又保护资源的分配。

三、异常的精确处理(1)定义一个异常。

在Delphi中,每个异常都是Exception[1]类的一个派生类[2]。

因此,定义一个异常就是定义一个Exception类的派生类。

type EMyException =class(Exception;当然,基类可以是Exception或者Exception的任何一个任何层次的派生类。

(2)在程序中抛出一个异常。

根据不同的情况抛出异常是使用异常的最基本的模式。

在Delphi中,由raise语句来实现。

【语法】raise 异常类.Create(…异常的缺省说明‟; (3)在try…except…end 中更加精确的捕捉异常。

使用on E:异常类do…结构可以在do体内处理特定异常类所抛出的异常。

四、异常的调试在Delphi IDE中,解除“Debugger Options”(可以使用菜单Tools—>Debugger Options…进行访问)中的Integrated Debugging复选框的勾选状态可以进行异常的调试。

python异常处理:try_except语句;try_finally语句;raise语句

python异常处理:try_except语句;try_finally语句;raise语句python标准异常异常名称描述BaseException所有异常的基类SystemExit解释器请求退出KeyboardInterrupt⽤户中断执⾏(通常是输⼊^C)Exception常规错误的基类StopIteration迭代器没有更多的值GeneratorExit⽣成器(generator)发⽣异常来通知退出StandardError所有的内建标准异常的基类ArithmeticError所有数值计算错误的基类FloatingPointError浮点计算错误OverflowError数值运算超出最⼤限制ZeroDivisionError除(或取模)零 (所有数据类型)AssertionError断⾔语句失败AttributeError对象没有这个属性EOFError没有内建输⼊,到达EOF 标记EnvironmentError操作系统错误的基类IOError输⼊/输出操作失败OSError操作系统错误WindowsError系统调⽤失败ImportError导⼊模块/对象失败LookupError⽆效数据查询的基类IndexError序列中没有此索引(index)KeyError映射中没有这个键MemoryError内存溢出错误(对于Python 解释器不是致命的)NameError未声明/初始化对象 (没有属性)UnboundLocalError访问未初始化的本地变量ReferenceError弱引⽤(Weak reference)试图访问已经垃圾回收了的对象RuntimeError⼀般的运⾏时错误NotImplementedError尚未实现的⽅法SyntaxError Python 语法错误IndentationError缩进错误TabError Tab 和空格混⽤SystemError⼀般的解释器系统错误TypeError对类型⽆效的操作ValueError传⼊⽆效的参数UnicodeError Unicode 相关的错误UnicodeDecodeError Unicode 解码时的错误UnicodeEncodeError Unicode 编码时错误UnicodeTranslateError Unicode 转换时错误Warning警告的基类DeprecationWarning关于被弃⽤的特征的警告FutureWarning关于构造将来语义会有改变的警告OverflowWarning旧的关于⾃动提升为长整型(long)的警告PendingDeprecationWarning关于特性将会被废弃的警告RuntimeWarning可疑的运⾏时⾏为(runtime behavior)的警告SyntaxWarning可疑的语法的警告UserWarning⽤户代码⽣成的警告1、try-except语句2、try-finally语句3、raise语句参考:⼀、try-except语句语句格式:try:检测范围except Exception [as reason]:出现异常(Exception)后的处理代码try:<语句> #运⾏别的代码except <名字>:<语句> #如果在try部份引发了'name'异常except <名字>,<数据>:<语句> #如果引发了'name'异常,获得附加的数据else:<语句> #如果没有异常发⽣ try的⼯作原理是,当开始⼀个try语句后,python就在当前程序的上下⽂中作标记,这样当异常出现时就可以回到这⾥,try⼦句先执⾏,接下来会发⽣什么依赖于执⾏时是否出现异常。

Delphi中try…except…end与try…finally…end的应用

Delphi中try…except…end与try…finally…end的应用Delphi中try…except…end与try…finally…end的应用在Delphi的中,提供了try…except…end和try…finally…end语句。

本人在过去得编程过程中,深刻地体会到,这两个语句的合理使用,可以带来很多好处。

一方面可以使程序结构更加清晰,使得我们不用编写大量的意外情况处理的代码;另一方面使我们可以很容易的编写出十分稳定可靠的程序。

一、我们为什么要使用try意外控制语句?假设我们现在要编写一个程序,在这个程序中需要对一个远程文件进行一系列操作。

先看如下代码:代码1:tryOpenRemoteFile;UpdateRemoteFile;CloseRemoteFile;excepton E: Exception dobeginCloseRemoteFile;ShowErrorMessage;end;end;这段代码中OpenRemoteFile和UpdateRemoteFile都有可能由于各种意外情况导致错误,当错误发生后,错误句柄将被捕获,继而执行on E: Exception do之后的语句。

设想如果Delphi没有提供try语句,那么我们的程序将被写成:代码2:if OpenRemoteFile thenbeginif UpdateRemoteFile thenCloseRemoteFile;elsebeginCloseRemoteFile;ShowErrorMessage;end;endelseShowErrorMessage;不用说,这两段程序谁更“好”,谁更不容易出错。

而且在实际使用中可能需要对远程文件做更复杂的操作。

二、try语句的一些简单应用。

在Delphi编程中常常遇到一些必须互相配对的语句,例如:对象的创建和释放;文件的打开和关闭;TDataSet的打开和关闭……。

python中的try...except...finally的用法

python中的try...except...finally的⽤法python中的 try...except...finally 的⽤法author:headsen chendate:2018-04-09 16:22:11try, except, finally是Python中的异常捕捉机制,通常的⽤法就是try..except...结合起来⽤,程序捕捉try语句块中的异常,如果发现异常就把异常交给except中的语句块进⾏处理,也就是执⾏except中的语句,这⾥except也可以结合if...else⼀起使⽤。

例1:try中⽆异常时,执⾏try和finally中的内容def read_file():try:print('aaa')except:print('error occurs while reading file')finally:print('bbbb')read_file()------>aaabbbb总结:当try下⾯的语句正常运⾏的时候,⼀直运⾏。

运⾏完了后运⾏finaly下⾯的语句例2:try中有异常时:当try下⾯的语句运⾏后,碰到异常的时候,运⾏except下⾯的语句,最后运⾏finaly下⾯的语句,finaly语句⼀般做些资源释放的⼯作,⽐如关闭打开的⽂件等。

def read_file():try:print(2222222222)print(aaa)except:print('error occurs while reading file')finally:print('bbbb')read_file()------>2222222222 ----------> 证明try中正确的程序会被执⾏的,配到异常后在调到except部分执⾏异常的。

error occurs while reading filebbbb当然,try...except也可以结合finally使⽤。

delphi 面试题及答案

delphi 面试题及答案Delphi是一种基于Pascal语言的面向对象的编程语言,被广泛应用于Windows平台的软件开发。

在Delphi的面试中,经常会涉及到一些基础知识和技巧的问题,下面是一些常见的Delphi面试题及其答案:1. 请简要介绍一下Delphi语言及其特点。

Delphi是一种由Borland公司开发的编程语言,它继承了Pascal语言的特性,同时也引入了一些面向对象的概念。

Delphi有以下特点:- 可视化开发环境:Delphi提供了一个强大的可视化开发环境,可以通过拖拽控件来构建用户界面。

- 快速编译:Delphi的编译速度非常快,能够提高开发效率。

- 丰富的组件库:Delphi提供了一个丰富的组件库,使得开发者可以快速构建功能强大的应用程序。

2. Delphi中的事件是什么?请简要说明事件的使用方法。

在Delphi中,事件是一种特殊的数据类型,用于处理用户交互、控件触发等操作。

事件可以通过赋值的方式关联到某个具体的方法上。

事件的使用方法如下:- 声明事件类型:使用关键字"procedure of object"来定义事件类型。

- 声明事件变量:在类或Form中声明相应类型的事件变量。

- 关联事件:将事件变量赋值为某个方法,即可关联事件。

- 触发事件:当相关的操作发生时,调用事件变量即可触发事件执行。

3. 请简要说明Delphi中的异常处理机制,并提供一个示例。

Delphi提供了一套完善的异常处理机制,用于捕获和处理程序运行中的异常。

开发者可以使用try...except...finally语句块来捕获和处理异常。

示例代码如下:```delphitry// 可能引发异常的代码块except// 处理异常的代码块finally// 无论是否发生异常,都会执行的代码块end;```4. 在Delphi中,如何实现两个窗体之间的数据传递?在Delphi中,可以通过以下几种方式实现两个窗体之间的数据传递:- 使用公共变量:将数据保存在一个公共单元中,供其他窗体访问。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、异常的来源在Delphi的应用程序中,下列的情况都比较有可能产生异常。

(1)文件处理(2)内存分配(3)Windows资源(4)运行时创建对象和窗体(5)硬件和操作系统冲突二、异常的处理(1)try…except…end;在try体内的代码发生异常时,系统将转向except部分进行异常的处理。

这是Delphi处理异常的最基本的方式之一。

(2)try…finally…end;这种异常处理结构一般用于保护Windows的资源分配等方面,它确保了无论try体内的代码是否发生异常,都需要由系统进行最后的统一处理的一些Windows对象的正确处理。

和try…except…end不同,该结构的finally部分总被执行。

(3)不存在try…except…finally…end结构来既处理异常,又保护资源分配的结构,但是,try…except…end结构允许嵌套到try…finally…end结构中,从而实现既处理异常,又保护资源的分配。

三、异常的精确处理(1)定义一个异常。

在Delphi中,每个异常都是Exception[1]类的一个派生类[2]。

因此,定义一个异常就是定义一个Exception类的派生类。

type EMyException = class(Exception);当然,基类可以是Exception或者Exception的任何一个任何层次的派生类。

(2)在程序中抛出一个异常。

根据不同的情况抛出异常是使用异常的最基本的模式。

在Delphi中,由raise语句来实现。

【语法】raise 异常类.Creat e(‘异常的缺省说明’);(3)在try…except…end中更加精确的捕捉异常。

使用on E:异常类do…结构可以在do体内处理特定异常类所抛出的异常。

四、异常的调试在Delphi IDE中,解除“Debugger Options”(可以使用菜单Tools—>Debugger Options…进行访问)中的Integrated Debugging复选框的勾选状态可以进行异常的调试。

五、异常的补充说明(1)每一段程序都有可能产生错误!这是软件业的一个不容置疑的现象和规律。

事实上,传统的if…else…结构完全可以解决所有的错误,使用Exception 机制也没能够回避在最原始的层次,通过遍历可能的情况来产生异常的做法,那么,为什么还要异常机制?答案很清楚:异常提供了一种更加灵活和开放的方式,使得后来的编程者可以来根据实际的情况处理这种错误,而不是使用预先设定好的处理结果。

Delphi7异常处理了解什么是异常和Delphi7中提供的异常类掌握Delphi7环境下自定义异常的方法和异常处理的语法结构与实现异常什么是异常程序开发过程中,有编译期错误和运行期错误,编译期错误很容易发现,而运行期错误(逻辑错误和异常)往往很难预料.为了程序的稳定性和可靠性,就需要对程序异常处理和保护.异常:理解为一种特殊的事件,该事件发生时,程序的正常执行将被打断.由程序导致的不正常情况是错误而不是异常,程序错误与异常不是相同的概念.异常是为方便用户报告错误并处理错误而创建的机制,一般是由操作系统完成的.运行期错误处理软件开发过程中,程序员必须提供适度的方式来处理不可避免的错误.一般方法如下:1 传统方法2 使用异常进行错误处理传统方法在Pascal早期版本中,程序员必须借助编译器开关和状态变量去检测和处理存在的错误.{$I-}{此编译器指令关闭I/O检测}Assign(InFile,InputName);Reset(InFile);{$I+}{此编译器指令恢复I/O检测}If IOResult0 then{错误处理代码};使用异常进行错误处理结构化异常处理是Delphi语言内建的特性.为我们处理异常提供了方便.处理异常有两方面:1 异常处理可确保适当地恢复在应用程序中分配或改变的任何资源.2 结构化异常处理为开发人员提供了一种一致的处理各种类型运行期错误的方式Delphi7异常处理机制异常处理的基本思想是通过提供规范方式处理软,硬件错误的能力,使程序更加健壮.异常处理可以将处理错误的代码与正常的逻辑处理代码相分离.Delphi缺省的方式是在应用程序收到异常之前捕获异常.IDE会给出一个”预警”对话框,以指明应用程序将要产生异常.异常处理机制是一种程序设计安全策略,它是建立在保护块思想上,通过try和end语句块对代码的封装确保在程序发生异常时,程序能够正常运行或释放所占用的资源.Delphi7异常处理机制传统程序设计中,用如下的伪代码方法来检查和处理程序错误:执行一个任务If 前一个任务未能正确执行执行错误处理执行下一个任务If 前一个任务未能正确执行执行错误处理……Delphi7异常处理机制例;try Age :=StrToInt(Edit1.Text); ShowMessage(Format('生于%d年',[YearOf(Now)- Age]));except on EConvertError do showmessage('输入编辑框的不是一个有效的数字!');on ERangeError do showmessage('输入编辑框的年龄值太大!');end;异常类Delphi7根据异常类型定义了相应的异常类.所有异常类的基类都是Exception类.Delphi7内置了大量的异常类,用户也可以通过Exception类自定义异常类.记住异常类的要点:1 异常类是响应不同异常现象的入口.2 熟悉异常类的层次结构.Exception异常类Exception是所有异常类的基类,它并不是以’T'开头,而是以’E'开头,它的派生类也是以’E'开头的.Exception类定义于SysUtils单元中.Exception类最常用的方法是Create方法:Constructor Create(const Msg:string);Exception.Create(‘我自己创建的异常!’);该方法用于创建一个异常类的实例,也可以显示错误信息,也可直接用这个方法提交一个异常raise Exception.Create(‘我抛出的异常!’);例:try raise Exception.Create('我抛出的异常!');except on E: Exception do showmessage('异常类名称:'+ E.ClassName+ #13#10+'异常信息:'+ E.Message);end;Delphi7内置的异常类Delphi7根据异常现象的类型定义了相应的异常类,这些异常类又称为Delphi7内置的异常类.具体分为运行时库异常类,对象异常类和组件异常类三大类.运行时库异常类(RTL)运行时库异常类可分为以下几种:1 整数计算异常2 浮点计算异常3 硬件异常4 堆异常5 输入输出异常(I/O异常)6 字符转换异常7 类型转换异常8 哑异常整数计算异常EIntError 整数计算异常(基类)EDivByZero 整数除0溢处EIntOverFlow 整数溢出ERangeError 整数越界EMathError 浮点计算异常(基类)EInvalidOp 无效浮点操作指令Eoverflow 浮点操作上溢Eunderflow 浮点操作下溢EZeroDivide 浮点计算除0硬件异常EProcessorException 硬件异常(基类)ESingleStep 应用程序产生单步中断Ebreakpoint 应用程序产生断点中断Efault 故障(继承EProcessorException,也是基类) EStackFault 对处理器栈段的非法访问EPageFault 内存管理器无法正确使用交换文件EGPFault 保护性错误,一般由未初始化指针或对象造成EInvalidOpCode 处理器遇到未定义指令堆异常和(I/O异常)堆异常:EOutOfMemory 堆中没有足够的内存完成操作EInvalidPointer 试图访问一个堆外的指针(I/O异常)EInOutError DOS输入/输出错误字符转换/类型转换异常和哑异常字符转换异常EConvertError 数字到字符串或字符串到数字转换错误类型转换异常EInvalidCast 类型转换异常哑异常EAbort 调用Abort产生,不显示错误提示框对象异常类对象异常类是针对非组件对象引发的异常而定义的. 对象异常类包括:2 打印异常类3 图形异常类4 字符串链表异常类流异常类流异常是指在程序中进行与流相关的操作时产生的异常.流异常类的基类是EStreamError,其他流异常类都直接或间接从它派生.派生关系见书48页图打印异常打印异常是由于应用程序向不存在的打印机发送打印命令或由于某种原因打印工作无法送到打印机时引发的.打印异常类为Eprinter,定义于Printers单元图形异常图形异常主要包括EInvalidGraphic和EInvalidGraphicOperation两个类均定义于Graphics单元EInvalidGraphic异常满足下列情况之一时引发:当应用程序试图向一个并不包含合法的位图,图象,元文件或用户自定义图形类型的文件中装入图象时.当应用程序试图装入不可识别扩展名的文件时当图象与LoadFromClipboardFormat或SaveToClipboardFormat中的格式不匹配时.当应用程序试图将图象的PixelFormat设为不支持的值EInvalidGraphicOperation异常在满足下列条件之一时发生:应用程序访问图象中不存在的扫描线时.应用程序不能成功写入图象时.应用程序在画布未处于有效状态时进行绘制.应用程序装入未知或不支持的图象格式时.应用程序将图象的PixelFormat设为不支持的值时不能分配该操作的句柄时.字符串链表异常字符串链表异常是由于用户对字符串链表进行非法操作时引发的.包括EStringListError,EListError等.由于许多部件都有一个Tstrings抽象类的属性(如Tiistbox组件的Items属性等),因而字符串链表异常在组件编程中很重要.EStringListError一般在字符串链表越界时产生.而EListError异常通常在以下情况下发生:当索引项超出链表范围时当字符串链表的Duplicates属性设置为dupError同时应用程序试图加入一个重复的字符串时.当向已排序的字符串链表中插入字符串时.组件异常类组件异常类用于响应组件异常,组件异常是由于对VCL组件进行操作时,违反了组件的使用规则及其特征而引发的,可分为两大类:通用组件异常、专用组件异常、通用组件异常。

相关文档
最新文档