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

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值