知识大全 异常处理与程序调试(二)[1]

Posted 语句

篇首语:人有恒心万事成,人无恒心万事崩。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 异常处理与程序调试(二)[1]相关的知识,希望对你有一定的参考价值。

DELPHI基础教程:异常处理与程序调试(二)[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

   异常响应

  异常响应为开发者提供了一个按自己的需要进行异常处理的机制 try …except …end形成了一个异常响应保护块 与finally不同的是 正常情况下except 后面的语句并不被执行 而当异常发生时程序自动跳到except 进入异常响应处理模块 当异常被响应后异常类自动清除

  下面的例子表示了文件打开 删除过程中发生异常时的处理情况

  uses Dialogs;

  var

  F: Textfile;

  begin

  OpenDialog Title := Delete File ;

  if OpenDialog Execute then

  begin

  AssignFile(F OpenDialog FileName)

  try

  Reset(F)

  if MessageDlg( Erase +OpenDialog FileName + ?

  mtConfirmation [mbYes mbNo] ) = mrYes then

  begin

  System CloseFile(F)

  Erase(F)

  end;

  except

  on EInOutError do

  MessageDlg( File I/O error mtError [mbOk] )

  on EAccessDenied do

  MessageDlg( File access denied mtError [mbOk] )

  end;

  end;

  end

  保留字on…do用于判断异常类型 必须注意的是 except后面的语句必须包含在某一个on…do模块中 而不能单独存在 这又是同finally不同的一个地方

   使用异常实例

  上面所使用的异常响应方法可总结为如下的形式

  on ExceptionType do

  响应某一类的异常

  这种方法唯一使用的信息是异常的类型 一般情况下这已能满足我们的需要 但我们却无法获取异常实例中包含的信息 比如异常消息 错误代码等 假设我们需要对它们进行处理 那么就必须使用异常实例

  为了使用异常实例 需要为特定响应模块提供一个临时变量来保存它

  on EInstance : ExceptionType do  …

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

  下面的代码用于获取异常消息并按自己的方式显示它

  窗口中包括一个ScrollBar部件 一个Button部件

  procedure TErrorForm Button Click(Sender: TObject)

  begin

  try

  ScrollBar Max := ScrollBar Min ;

  except

  on E: EInvalidOperation do

  MessageDlg( Ignoring Exception: +E Message

  mtInformation [mbOK] )

  end;

  end;

   提供缺省响应

  在异常响应模块中 一般我们只对希望响应的特定异常进行处理 如果一个异常发生而响应模块并没有包含对它的处理代码 则退出当前响应模块 异常类仍被保留

  为了保证任何异常发生后都能在当前响应模块中被清除 可以定义缺省响应

  try

  程序正常功能

  except

  on ESomething do

  响应特定异常

  else

  提供缺省响应

  end;

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

   响应一族异常

  诸如

  on ExceptionType do

  的异常响应语句不仅可响应本类异常 而且可以响应子类异常 对于象EIntError EMathError等系统不会引发的异常 它们将只响应其子类异常 而对于象

  on Exception do

  这样的语句将会对任何异常进行响应

  下面一段代码对整数越界异常进行单独处理 而对其它整数异常进行统一处理

  try

  整数运算

  except

  on ERangeError do

  越界处理

  on EIntError do

  其它整数异常处理

  end;

  由于异常在处理后即被清除 因而上面的代码可保证不会使ERangeError异常被多次处理 假如颠倒两条响应语句的顺序 则ERangeError异常响应将永远没有被执行的机会

  由于异常在处理后即被清除 因而当希望对异常进行多次处理时就需要使用保留字raise来重引发一个当前异常

cha138/Article/program/Delphi/201311/25188

相关参考

知识大全 异常处理与程序调试(二)[2]

DELPHI基础教程:异常处理与程序调试(二)[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 异常处理与程序调试(二)[4]

DELPHI基础教程:异常处理与程序调试(二)[4]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 异常处理与程序调试(一)[1]

DELPHI基础教程:异常处理与程序调试(一)[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 异常处理与程序调试(三)[1]

DELPHI基础教程:异常处理与程序调试(三)[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 异常处理与程序调试(一)[4]

DELPHI基础教程:异常处理与程序调试(一)[4]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 异常处理与程序调试(一)[3]

DELPHI基础教程:异常处理与程序调试(一)[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 异常处理与程序调试(一)[2]

DELPHI基础教程:异常处理与程序调试(一)[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 异常处理与程序调试(三)[3]

DELPHI基础教程:异常处理与程序调试(三)[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 异常处理与程序调试(三)[2]

DELPHI基础教程:异常处理与程序调试(三)[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

SBR调试程序

(一)活性污泥的培养驯化  SBR反应池去除有机物的机理与普通活性污泥法基本相同,主要大量繁殖的微生物群体降解污水中的有机物。  活性污泥处理系统在正式投产之前的首要工作是培养和驯化活性污泥。活性污泥