果异常不是由用户定义,而是系统定 义的,则不需要使用raise语句。except保留字后 的代码为异常处理代码,异常处理代码将根据 异常的类型,进行相应处理。 如果受到异常保护的语句没有出现异常,程 序会自动跳过except…end之间的异常处理代码 ,直接执行后面的语句;一旦代码出现异常, 则执行except…end之间的异常处理代码,然后 再执行其后的语句。
9.3.2 异常处理实例
上一节介绍了Delphi系统的异常处理机制 ,下面介绍如何使用异常处理机制来处理程 序中的系统异常和自定义异常。 1.系统异常处理 当程序出现系统异常时,直接调用程序中 的异常处理语句即可。下面通过例子说明系 统异常的处理方法。 【例9-2】已知如下程序代码会产生除0异常, 使用异常处理语句处理异常情况。
program Project1; uses SysUtils; var x,y,z:integer; begin write('Input x:'); readln(x); write('Input y:'); readln(y); z := x div y; write('z=',z); readln; end.
以上代码表示对两个整数进行整除运算并显 示结果。如果输入的除数为0,将产生如下图所 示的异常现象。
程序出现异常
当出现上图所示的情况时,不但程序不能正 常运行,而且难以从提示中获得程序出错原因 。为此,在程序设计时必须为可能出现异常的 代码添加异常处理语句。下面添加代码对程序 中的整除语句进行保护,修改后的代码如下:
program Project1; uses SysUtils; var x,y,z:integer; begin write('Input x:'); readln(x);
write('Input y:'); readln(y); try //异常处理代码开始 z := x div y; write('z=',z); except //异常处理模块开始 on EDivByZero do begin //异常类型 writeln('div by zero'); end; end; //异常处理模块结束 rea