当前位置:七道奇文章资讯编程技术Delphi编程
日期:2011-03-20 17:55:00  来源:本站整理

第十二章 非常处理与程序调试(二)[Delphi编程]

赞助商链接



  本文“第十二章 非常处理与程序调试(二)[Delphi编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

12.3 非常呼应 

  非常呼应为开辟者供应了一个按自己的需求举行非常处理的机制.try except end形成了一个非常呼应保护块.与finally差别的是:正常情形下except 背面的语句并不被履行,而当非常发生时程序自动跳到except,进入非常呼应处理模块.当非常被呼应后非常类自动排除.

  下面的例子表示了文件翻开、删除历程中发生非常时的处理情形: 

uses Dialogs;

var

F: Textfile;

begin

OpenDialog1.Title := 'Delete File';

if OpenDialog1.Execute then

begin

AssignFile(F, OpenDialog1.FileName);

try

Reset(F);

if MessageDlg('Erase ' +OpenDialog1.FileName + '?',

mtConfirmation, [mbYes, mbNo], 0) = mrYes then

begin

System.CloseFile(F);

Erase(F);

end;

except

on EInOutError do

MessageDlg('File I/O error.', mtError, [mbOk], 0);

on EAccessDenied do

MessageDlg('File access denied.', mtError, [mbOk], 0);

end;

end;

end.

  保存字ondo用于判断非常范例.必须注意的是:except背面的语句必须包含在某一个ondo模块中,而不能单独存在.这又是同finally差别的一个地方. 

12.3.1 利用非常实例 

  上面所利用的非常呼应办法可总结为以下的情势: 

  on ExceptionType do

{呼应某一类的非常} 

  这种办法唯一利用的信息是非常的范例.普通情形下这已能满意我们的需求.但我们却无法获得非常实例中包含的信息,比方非常消息、错误代码等.假定我们需求对它们举行处理,那么就必须利用非常实例.

  为了利用非常实例,需求为特定呼应模块供应一个暂时变量来保存它: 

  on EInstance : ExceptionType do  … 

  在当前呼应模块中我们可以象利用一个普通对象那样来引用它的数据成员.但在当前呼应模块之外不被承认.

  下面的代码用于获得非常消息并按自己的方法显示它: 

{窗口中包含一个ScrollBar部件,一个Button部件} 

procedure TErrorForm.Button1Click(Sender: TObject);

begin

try

ScrollBar1.Max := ScrollBar1.Min-1;

except

on E: EInvalidOperation do

MessageDlg('Ignoring Exception:'+E.Message,

mtInformation,[mbOK],0);

end;

end; 

12.3.2 供应缺省呼应 

  在非常呼应模块中,普通我们只对但愿呼应的特定非常举行处理.假如一个非常发生而呼应模块并没有包含对它的处理代码,则退出当前呼应模块,非常类仍被保存.

  为了保证任何非常发生后都能在当前呼应模块中被排除,可以定义缺省呼应: 

try

{程序正常功效}

except

on ESomething do

{呼应特定非常}

else

{供应缺省呼应}

end; 

由于else可以呼应任何非常,包含我们一无所知的非常,因此在缺省呼应中最好只包含诸如显示一个消息框之类的处理,而不要改变程序的运行状况或数据. 


  以上是“第十二章 非常处理与程序调试(二)[Delphi编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • 第十二章 非常处理与程序调试(三)
  • 第十二章 非常处理与程序调试(二)
  • 第十二章 非常处理与程序调试(一)
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .