IT程序员不得不知道的程序出现的错误类型

来源:互联网 发布:网络歌曲男人伤感情歌 编辑:程序博客网 时间:2024/05/17 07:23
即使是最牛叉的程序员,他们在程序开发过程的各个阶段也可能发生错误,但是他们有着丰富的解决错误的能力。下面简要分析这些错误。
    我们可以将程序设计中的错误分成五类:
第一类,编译期错误。何谓编译, 编译就是把高级语言变成计算机可以识别的2进制语言,计算机只认识1和0,编译程序把人们熟悉的语言换成2进制的。 编译程序把一个源程序翻译成目标程序的工作过程分为五个阶段词法分析;语法分析;语义检查和中间代码生成;代码优化;目标代码生成。主要是进行词法分析和语法分析,又称为源程序分析,
    所以编译错误,即 源程序分析过程中发现有语法错误,给出提示信息
这是指在程序的编译过程中由编译程序识别或检查出来的 错误,常称之为“语法错误”。诸如不符合规定的语句格式、对象说明与使用不一致、不正确的分隔符、不存在的标号、不正确的初始化数据、不恰当的循环嵌套等等。在编译期发现一个错误后,编译工作并不立即停止,而是尽可能多地找出源程序中的全部错误。
第二类,连接错误。何谓链接,连接用来把要执行的程序与库文件或其他已经翻译好的子程序(能完成一种独立功能的程序模块)连接在一起,形成机器能执行的程序。
    所以,连接错误是指连接程序在装配目标程序时发现的错误,通常由于函数名书写错误、缺少包含文件或包含文件的路径错误等原因引起的
第三类,运行期错误。所谓运行期,即程序在编译连接后产生可执行文件后,执行该文件。所以,运行期错误指可执行程序执行过程中发现的错误。如在计算过程 中遇到了除数为零的错误、求一个负数的平方根等等。编译系统发现这类错误后如无特殊指示通常告知一些适当信息,然后立即停止程序的执行。当然,为阻止这类 错误的出现,程序设计者可在程序中编入一些由自己来检查这类错误的程序段,这可能更适合于自己的处理要求。
第四类,逻辑性错误。逻辑的定义就不用说了,正确的输入能够得不出错误的输出,就说明逻辑没有问题。所以这类错误是在编译期、连接期和运行期都不能发现的错误。如程序中把log写成了log10,把x+y写成了x-y等。显然编译系统是无法查出这类错误的。
第五类,警告性错误。警告就是经过编译器检查后从语法的正确性上来说没有出现语法错误,例如隐性类型转换,而只是有一些警告提示。这类错误是指编译系统在编译阶段发现程序中有一些可疑的或含混不清的地方,如源程序中发现了一个定义过但从未使用过的变量。这类情况从语法上讲是正确的,因此一般不会停止编译,在大多数情况下不会阻止目标程序与可执行程 序的生成、连接和运行。但是对这类错误不应掉以轻心,应仔细检查程序,这往往存在着某种潜在的运行期错误。
总之,排错是非常困难的,有可能花费很长的时间。程序设计的目标应该是避免出现太多的问题。对减少排错能有所帮助的技术包括:好的设计、好的风格、边界条件测试、合理性检查、限制全局数据等等。
原文曾在我的新浪博客出现,敬请参阅。
原创粉丝点击