第9章 程序异常与调试 章
在程序设计过程中,错误的出现是不 能避免的。同时,由于程序运行的环境, 包括
软件环境与硬件环境都有可能出现 各种问题,所以设计的程序也有可能出 现缺陷。本章将介绍如何使用Delphi系统 提供的调试工具来尽可能多地发现程序 中的错误和缺陷,从而使应用程序具有 更好的稳定性、可靠性和健壮性。
9.1 程序错误与异常
在程序设计中,错误与异常是一对很难 区分的概念。一旦程序不能执行或不能得到 正常的运行结果,都可以认为程序处于非正 常状态,或者说程序出错。然而,错误与异 常还是有一定区别的,通常情况下,由于程 序内部的问题,例如,语法错误或逻辑错误 而导致的程序不能正常执行,即称为错误; 而由于非程序自身问题,例如,系统资源耗 尽等情况导致的程序不能正常运行,则称为 异常。
9.1.1 程序错误
程序错误是程序自身存在的缺陷,主要 包括语法错误和逻辑错误。程序中的错误会 导致程序无法正常编译、执行或无法得到正 确的执行结果。 1.语法错误 语法错误是最常见的程序错误,这种错 误多发生在初学者编写的程序中,随着编程 人员对编程语言的逐步掌握,程序发生语法 错误的概率会快速降低。常见的语法错误有 以下几种:
变量未声明就直接使用。 变量重复定义。 变量类型不匹配。 语句书写不符合规范,如begin与end关键字不 匹配等。 语法错误虽然常见,但它的查找却很简单。 Delphi系统的编译器可以发现并定位所有的语法 错误,并说明错误的位置与类型。 【例9-1】编写一个具有语法错误的程序,然后编 译,查看运行结果。 操作步骤如下: ? ? ? ?
(1)创建一个Delphi控制台应用程序模块,系统 将自动生成如下图所示的初始程序代码。
Delphi初始程序代码
(2)将光标定位到Insert code here处,添加如 下代码:
begin var x,y,z:integer; x := 10; y := 20; z = x + y; end.
(3)执行Run→Run命令,运行结果如下图所 示。
【例9-1】程序运行结果
在上图中,错误代码行以红色背景显示,同 时,程序终止运行,并在代码编辑器下方的窗 口中一一列出每个错误的原因和位置。
提示: 提示:很多情况下,系统对错误代码的定位不太准确,需要在提示 出错位置的附近查找。在时,用户的编程经验将起到很大作用。
2.逻辑错误 当程序具有逻辑错误时,由于编译系统不能 发现该类型的错误,所以程序依然可以执行, 但得不到正确的结果。与语法错误相比,逻辑 错误的隐藏更深,更难以发现,从而有可能导 致更大的破坏。 逻辑错误的产生多数是由于程序
设计时的设 计
方案考虑不周
,
问题的算法描述不合理造成 的,例如,程序中出现的无限循环过程即为一 种常见的逻辑错误。因此,逻辑错误的发现与 排除更依赖于程序设计人员的经验。
9.1.2 程序异常
通常情况下,由于非程序自身因素而导 致程序不能正常执行,即认为程序出现异常 。Delphi程序中有两种异常,分别是系统异 常和程序异常。 1.系统异常 系统异常是指由于非程序原因而导致程 序运行进入不正常状态。常见的系统异常包 括资源不能访问、数组越界、非法指针和硬 件错误等。这些异常情况被系统预先进行了 定义,所示称为系统异常。
2.自定义异常 虽然Delphi系统已经定义了多种类型的异常 ,但出现异常的情况很多,那些没有在Delphi系 统中定义的异常,则需要用户定义,这些由用 户定义的异常称为自定义异常。
9.2 程序调试
只有通过严格的调试,才能尽量减少程 序中的错误与异常,从而提高程序的稳定性 与健壮性。经过调试,可以发现大量语法错 误、逻辑错误和程序异常。
9.2.1 语法错误调试
编写好程序后,执行Run→Run命令,或 单击工具栏中的Run按钮,即可以启动
Delphi系统的编译系统,进行程序调试。如 果程序出现语法错误,系统会终止