程序中可能有三种类型的错误。
2015-09-14 17:59
399 查看
程序中可能有三种类型的错误:
1、语法错误(syntax errors);
2、运行错误(runtime errors);
3、语义错误(semantic errors)
语 法 错 误 误
程序要运行,首先语句的语法必须正确,才能够被计算机执
行。否则,执行的过程中断,返回错误信息。语法指的是程序语句的组成
要符合语言规定的构成规则。例如,下面的语句是符合语法规则的:
>>> a = b - c
它的意思是将b减c的结果赋值给变量a。如果你把这个表达式写成“b - c =
a”这种形式,就错了,因为它不合语法规定,“b - c”这样的表达式不能
被赋值。当然语法也不是凭空而定的,它要符合我们的思维习惯。
对于自然语言来说,比如说汉语,你写的文章或说的话,存在少量的
语法错误,还不至于影响要表达的意思。而计算机则没有达到如此聪明的
地步,它要求百分之百的精确。你的程序要完全符合计算机的语法,哪怕
有一点错误,它也不可能执行你的程序。其实语法错误还是比较容易找到
和消除的。当你开始学习编程时,由于需要逐渐熟悉语法,出现的语法错
误可能会很多,随着经验的增长,它会一点点的减少,即使有,你也能够
轻松的找到并改正它们。
运 行 错 误
误 即使是完美无缺的程序,在运行的过程中也会出现错误,
有时称为 异 常,或曰不可预料的错误。有人说,计算机不是善于精确计
算吗?不错,确实如此。错的不是计算机,而是我们人类。计算机说到
底,不过是人类设计的,为我们所用的工具。它和电视机、汽车从本质
上来说,是一样的。限于现在有关计算机软硬件的理论水平、工业制造水
平、甚至使用者的水平等等一些内在的、外在的因素,你想,它能够不出
错吗?程序越复杂,出现异常的几率越大。异常的种类很多,比如内存用
尽,除数为零的除法,都可能导致异常。Python中设计了专门的异常处
理语句,把错误的影响降至最低。
语 义 错 误 误 程序即使有语义错误,也能正常运行,也不会产生任何错误
信息,但得到的结果和我们预料的大相径庭。这时候程序做了一些别的事
情。发生这种错误一般是我们对语句的运行机理了解的不够透彻,自以为
它应该如此运行,而实际却不是这样。还有可能是你的解决问题的思路本
身就是错的,写的程序当然是错的。查找这样的错误很不容易,需要从结
果进行推理,看一看是程序的哪一部分导致了这样的结果。
1、语法错误(syntax errors);
2、运行错误(runtime errors);
3、语义错误(semantic errors)
语 法 错 误 误
程序要运行,首先语句的语法必须正确,才能够被计算机执
行。否则,执行的过程中断,返回错误信息。语法指的是程序语句的组成
要符合语言规定的构成规则。例如,下面的语句是符合语法规则的:
>>> a = b - c
它的意思是将b减c的结果赋值给变量a。如果你把这个表达式写成“b - c =
a”这种形式,就错了,因为它不合语法规定,“b - c”这样的表达式不能
被赋值。当然语法也不是凭空而定的,它要符合我们的思维习惯。
对于自然语言来说,比如说汉语,你写的文章或说的话,存在少量的
语法错误,还不至于影响要表达的意思。而计算机则没有达到如此聪明的
地步,它要求百分之百的精确。你的程序要完全符合计算机的语法,哪怕
有一点错误,它也不可能执行你的程序。其实语法错误还是比较容易找到
和消除的。当你开始学习编程时,由于需要逐渐熟悉语法,出现的语法错
误可能会很多,随着经验的增长,它会一点点的减少,即使有,你也能够
轻松的找到并改正它们。
运 行 错 误
误 即使是完美无缺的程序,在运行的过程中也会出现错误,
有时称为 异 常,或曰不可预料的错误。有人说,计算机不是善于精确计
算吗?不错,确实如此。错的不是计算机,而是我们人类。计算机说到
底,不过是人类设计的,为我们所用的工具。它和电视机、汽车从本质
上来说,是一样的。限于现在有关计算机软硬件的理论水平、工业制造水
平、甚至使用者的水平等等一些内在的、外在的因素,你想,它能够不出
错吗?程序越复杂,出现异常的几率越大。异常的种类很多,比如内存用
尽,除数为零的除法,都可能导致异常。Python中设计了专门的异常处
理语句,把错误的影响降至最低。
语 义 错 误 误 程序即使有语义错误,也能正常运行,也不会产生任何错误
信息,但得到的结果和我们预料的大相径庭。这时候程序做了一些别的事
情。发生这种错误一般是我们对语句的运行机理了解的不够透彻,自以为
它应该如此运行,而实际却不是这样。还有可能是你的解决问题的思路本
身就是错的,写的程序当然是错的。查找这样的错误很不容易,需要从结
果进行推理,看一看是程序的哪一部分导致了这样的结果。
相关文章推荐
- 截屏
- java发邮件源码
- C语言中函数参数入栈的顺序
- C#_备份sqlserver数据库
- C#_加密解密
- IOS从视频中获取截图
- Objective-C入门03:类和对象
- js跨域问题的解决
- Win10系统问题解决——关键错误开始菜单和cortana无法工作
- linux常用命令(27):tar命令
- Println(Object)小贴士
- 检测内存泄漏
- 从零实现来理解机器学习算法:书籍推荐及障碍的克服
- css优先级(特殊性)
- ubuntu svn 已跳过 'Admin/*****.php' -- 节点处于冲突状态
- C#_Stream
- C#_发送手机短信
- poj1363Rails(栈模拟)
- 从一个集合中查找最大最小的N个元素——Python heapq 堆数据结构
- TCP连接的参数设置