首页 考试吧论坛 Exam8视线 考试商城 网络课程 模拟考试 考友录 实用文档 求职招聘 论文下载
2011中考 | 2011高考 | 2012考研 | 考研培训 | 在职研 | 自学考试 | 成人高考 | 法律硕士 | MBA考试
MPA考试 | 中科院
四六级 | 职称英语 | 商务英语 | 公共英语 | 托福 | 雅思 | 专四专八 | 口译笔译 | 博思 | GRE GMAT
新概念英语 | 成人英语三级 | 申硕英语 | 攻硕英语 | 职称日语 | 日语学习 | 法语 | 德语 | 韩语
计算机等级考试 | 软件水平考试 | 职称计算机 | 微软认证 | 思科认证 | Oracle认证 | Linux认证
华为认证 | Java认证
公务员 | 报关员 | 银行从业资格 | 证券从业资格 | 期货从业资格 | 司法考试 | 法律顾问 | 导游资格
报检员 | 教师资格 | 社会工作者 | 外销员 | 国际商务师 | 跟单员 | 单证员 | 物流师 | 价格鉴证师
人力资源 | 管理咨询师考试 | 秘书资格 | 心理咨询师考试 | 出版专业资格 | 广告师职业水平
驾驶员 | 网络编辑
卫生资格 | 执业医师 | 执业药师 | 执业护士
会计从业资格考试会计证) | 经济师 | 会计职称 | 注册会计师 | 审计师 | 注册税务师
注册资产评估师 | 高级会计师 | ACCA | 统计师 | 精算师 | 理财规划师 | 国际内审师
一级建造师 | 二级建造师 | 造价工程师 | 造价员 | 咨询工程师 | 监理工程师 | 安全工程师
质量工程师 | 物业管理师 | 招标师 | 结构工程师 | 建筑师 | 房地产估价师 | 土地估价师 | 岩土师
设备监理师 | 房地产经纪人 | 投资项目管理师 | 土地登记代理人 | 环境影响评价师 | 环保工程师
城市规划师 | 公路监理师 | 公路造价师 | 安全评价师 | 电气工程师 | 注册测绘师 | 注册计量师
缤纷校园 | 实用文档 | 英语学习 | 作文大全 | 求职招聘 | 论文下载 | 访谈 | 游戏
您现在的位置: 考试吧(Exam8.com) > 计算机等级考试 > 计算机二级 > Delphi > 复习资料 > 正文

2011计算机等考Delphi讲义:异常处理与程序调试

来源:考试吧Exam8.com) 2010-10-28 11:26:53 考试吧:中国教育培训第一门户 模拟考场
Delphi提供了一套强大的异常处理机制。巧妙地利用它,可以使你的程序更为强健,使用更为友好。

  12.1.1 运行时间库异常类(RTL Exception)

  运行时间库异常可以分为七类,它们都定义在SysUtils库单元中。

  12.1.1.1 I/O异常

  I/O异常类EInOutError是在程序运行中试图对文件或外设进行操作失败后产生的,它从Exception派生后增加了一个公有数据成员ErrorCode,用于保存所发生错误的代码。这一成员可用于在发生I/O异常后针对不同情况采取不同的对策。

  当设置编译指示{$I- } 时,不产生I/O异常类而是把错误代码返回到预定义变量IOResult中。

  12.1.1.2 堆异常

  堆异常是在动态内存分配中产生的,包括两个类EOutOfMemory和EInvalidPointer。

  表12.1 堆异常类及其产生原因

  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  异常类 引发原因

  ─────────────────────────────────

  EOutOfMemory 没有足够的空间用于满足所要求的内存分配

  EInvalidPointer 非法指针。一般是由于程序试图去释放一个业已释放的指针而引起的

  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  12.1.1.3 整数异常

  整数异常都是从一个EIntError类派生的,但程序运行中引发的总是它的子类:EDivByZero,ERangeError,EIntOverFlow。

  表12.2 整数异常及其产生原因

  ━━━━━━━━━━━━━━━━━━━━━

  异常类 引发原因

  ─────────────────────

  EDivByZero 试图被零除

  ERangeError 整数表达式越界

  EIntOverFlow 整数操作溢出

  ━━━━━━━━━━━━━━━━━━━━━━

  ERangeError当一个整数表达式的值超过为一个特定整数类型分配的范围时引发。比如下面一段代码将引发一个ERangeError异常。

  var

  SmallNumber: ShortInt;

  X , Y: Integer;

  begin

  X := 100;

  Y := 75;

  SmallNumber := X * Y;

  end;

  特定整数类型包括ShortInt、Byte以及与整数兼容的枚举类型、布尔类型等。例如:

  type

  THazard = ( Safety , Marginal , Critical , Catastrophic );

  var

  Haz: THazard;

  Item: Integer;

  begin

  Item:= 4;

  Haz:= THazard ( Item );

  end;

  由于枚举数越界而引发一个ERangeError异常。

  数组元素越界也会引发一个ERangeError异常,如:

  var

  Values: array[1..10] of Integer;

  i: Integer;

  begin

  for i := 1 to 11 do

  Values[i] := i;

  end;

  ERangeError异常只有当类型检查打开时才会引发。这可以在代码中包含{$R+} 编译指示或设置IDE Option|Project的Range_Checking Option选择框。

  EIntOverFlow异常类在Integer、Word、Longint三种整数类型越界时引发。如:

  var

  I : Integer;

  a,b,c : Word;

  begin

  a := 10;

  b := 20;

  c := 1;

  for I := 0 to 100 do

  begin

  c := a*b*c;

  end;

  end;

  引发一个EIntOverFlow异常。

  EIntOverFlow异常类只有在编译选择框Option|Project|Over_Flow_Check Option选中时才产生。当关闭溢出检查,则溢出后变量保留该类整数的最大范围值。

上一页  1 2 3 4 5 6 7 8 9 10  ... 下一页  >> 
  相关推荐:2010年9月计算机等级考试试题及答案解析专题
       预告:名师解析2010年9月计算机等级考试试题答案
       2010年9月计算机等级考试成绩查询时间及入口
       2010年9月计算机等考成绩查询短信免费提醒开通
文章搜索
版权声明:如果计算机等级考试网所转载内容不慎侵犯了您的权益,请与我们联系800@exam8.com,我们将会及时处理。如转载本计算机等级考试网内容,请注明出处。