其他语言

位置:IT落伍者 >> 其他语言 >> 浏览文章

DELPHI基础教程:异常处理与程序调试(二)[3]


发布日期:2021年01月27日
 
DELPHI基础教程:异常处理与程序调试(二)[3]

口令检查是用户在PassWord中输入口令并按下回车键后开始的实现代码在PassWord的OnKeyPress事件处理过程中

procedure TFormPassWordKeyPress(Sender: TObject; var Key: Char)

const

CurrentPassWord = Delphi;

begin

if Key = # then

begin

try

if PassWordtext <> CurrentPassWord then

raise EInvalidPassWordCreate;

LabelVisible := True;

InputEditVisible := True;

InputEditSetFocus;

PassWordVisible := False;

LabelVisible := False;

except

on EInvalidPassWord do

begin

PassWordtext := ;

raise;

end;

end;

Key:=#;

end;

end;

同样在InputEdit的OnKryPress事件处理过程中实现了输入数字的合法性检查

procedure TFormInputEditKeyPress(Sender: TObject; var Key: Char)

var

Res: Real;

Code: Integer;

begin

if Key = # then

begin

try

val(InputEdittextResCode)

if Code <> then

raise EInValidInputcreate(

if (Res > ) or (Res < ) then

raise EInValidInputcreate(

MessageDlg(Correct Input mtInformation[mbOk]

Key := #;

except

on E:EInValidInput do

begin

InputEdittext := ;

MessageDlg(EMessage mtWarning[mbOk]

end;

end;

end;

end;

由于异常响应后即被清除所以要显示异常信息需要另外的手段在以上两段程序中我们采用了两种不同的方法在口令合法性检查中利用异常重引发由系统进行缺省响应在输入数字合法性检查中通过异常实例来获取异常信息并由自己来显示它

以上所举的是一个非常简单的例子但从中已可以发现使用自定义异常编程为程序设计带来了很大的灵活性

利用异常响应编程

利用异常处理机制不仅能使程序更加健壮而且也提供了一种使程序更加简捷明了的途径事实上使用自定义异常类就是一种利用异常响应编程的方式这里我们再讨论几个利用标准异常类编程的例子

比如为了防止零作除数可以在进行除法运算前使用if…then…else语句但如果有一系列这样的语句则繁琐程度是令人难以忍受的这时候我们可能倾向于使用EDivByZero异常例如如下一段程序就远比用if…then…else实现简捷明了

function Calcu(xyzabc:Integer)Real;

begin

try

Result := x/a+y/b+z/c ;

except

on EDivByZero do

Result := ;

end;

end;

在()记录文件的打开与创建中就是利用异常响应来实现文件的打开或创建

procedure TRecFileFormOpenButtonClick(Sender: TObject)

begin

if OpenDialogExecute then

FileName := OpenDialogFileName

else

exit;

AssignFile(MethodFileFilename)

try

Reset(MethodFile)

FileOpened := True;

except

on EInOutError do

begin

try

if FileExists(FileName) = False then

begin

ReWrite(MethodFile)

FileOpened := True;

end

else

begin

FileOpened := False;

MessageDlg(文件不能打开mtWarning[mbOK]

end;

except

on EInOutError do

begin

FileOpened := False;

MessageDlg(文件不能创建mtWarning[mbOK]

end;

end;

end;

end;

if FileOpened = False then exit;

Count := FileSize(MethodFile)

if Count > then

ChangeGrid;

RecFileFormCaption := FormCaption+ +FileName;

NewButtonEnabled := False;

OpenButtonEnabled := False;

CloseButtonEnabled := True;

end;

总之利用异常响应编程的中心思想是虽然存在预防异常发生的确定方法但却对异常的产生并不进行事前预防而是进行事后处理并以此来简化程序的逻辑结构

[] [] [] []

               

上一篇:DELPHI基础教程:异常处理与程序调试(一)[1]

下一篇:DELPHI基础教程:异常处理与程序调试(二)[2]