Python 错误和异常

原创 2017年09月13日 18:29:47

简述

程序中的错误一般被称为 Bug,无可否认,这几乎总是程序员的错。。。

程序员的一生,始终伴随着一件事 - 调试(错误检测、异常处理)。反反复复,最可怕的是:不仅自己的要改,别人的也要改。。。一万头草泥马奔腾而过!

版权所有:一去丶二三里,转载请注明出处:http://blog.csdn.net/liang19890820

错误

程序错误,主要分为三类:

  • 语法错误
  • 逻辑错误
  • 运行时错误

语法错误

语法错误(也称:解析错误):是指不遵循语言的语法结构引起的错误(程序无法正常编译/运行)。

在编译语言(例如:C++)中,语法错误只在编译期出现,编译器要求所有的语法都正确,才能正常编译。不过对于直译语言(例如:Python)来说,语法错误可能在运行期才会出现,而且不太容易区分语法错误及语义错误。

常见的 Python 语法错误有:

  • 遗漏了某些必要的符号(冒号、逗号或括号)
  • 关键字拼写错误
  • 缩进不正确
  • 空语句块(需要用 pass 语句)

例如,编写这样一个条件判断语句:

>>> if n < 5
  File "<stdin>", line 1
    if n < 5
           ^
SyntaxError: invalid syntax

由于 if 语句中缺少一个冒号(:),不符合 Python 语法,因此程序无法正常运行。

逻辑错误

逻辑错误(也称:语义错误):是指程序的执行结果与预期不符(程序可以正常运行,不会 Crash)。

与语法错误不同的是,逻辑错误从语法上来说是正确的,但会产生意外的输出或结果,并不一定会被立即发现。逻辑错误的唯一表现就是错误的运行结果。

常见的逻辑错误有:

  • 运算符优先级考虑不周
  • 变量名使用不正确
  • 语句块缩进层次不对
  • 在布尔表达式中出错

例如,要计算两个数的平均值:

>>> def average(a, b):
...     return a + b / 2  # 应为 (a + b) / 2
... 
>>> 

虽然程序能够正常运行,但代码中缺少括号,由于运算符优先级(先乘除,后加减)的缘故,运算结果并不正确。

运行时错误

运行时错误:是指程序可以运行,但是在运行过程中遇到错误,导致意外退出。

当程序由于运行时错误而停止时,通常会说程序崩溃了。在 Python 中,这种运行时错误被称为异常。

Python 中的一些运行时错误:

  • 使用未定义的标识符(NameError
  • 除数为 0(ZeroDivisionError
  • 打开的文件不存在(FileNotFoundError
  • 导入的模块没被找到(ImportError

例如,除数为 0:

>>> 5 / 0
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ZeroDivisionError: division by zero

每当出现这类运行时错误时,Python 就会创建一个异常对象。如果处理不当,会输出一个跟踪(Traceback)到那个错误,以及关于为什么会出现错误的一些细节。

内置异常的层次结构

Python 中有许多内置的异常,当出现相应的错误时,就会引发这些异常。

Built-in Exceptions 中,有一个内置异常的完整层次结构:

BaseException
 +-- SystemExit
 +-- KeyboardInterrupt
 +-- GeneratorExit
 +-- Exception
      +-- StopIteration
      +-- StopAsyncIteration
      +-- ArithmeticError
      |    +-- FloatingPointError
      |    +-- OverflowError
      |    +-- ZeroDivisionError
      +-- AssertionError
      +-- AttributeError
      +-- BufferError
      +-- EOFError
      +-- ImportError
           +-- ModuleNotFoundError
      +-- LookupError
      |    +-- IndexError
      |    +-- KeyError
      +-- MemoryError
      +-- NameError
      |    +-- UnboundLocalError
      +-- OSError
      |    +-- BlockingIOError
      |    +-- ChildProcessError
      |    +-- ConnectionError
      |    |    +-- BrokenPipeError
      |    |    +-- ConnectionAbortedError
      |    |    +-- ConnectionRefusedError
      |    |    +-- ConnectionResetError
      |    +-- FileExistsError
      |    +-- FileNotFoundError
      |    +-- InterruptedError
      |    +-- IsADirectoryError
      |    +-- NotADirectoryError
      |    +-- PermissionError
      |    +-- ProcessLookupError
      |    +-- TimeoutError
      +-- ReferenceError
      +-- RuntimeError
      |    +-- NotImplementedError
      |    +-- RecursionError
      +-- SyntaxError
      |    +-- IndentationError
      |         +-- TabError
      +-- SystemError
      +-- TypeError
      +-- ValueError
      |    +-- UnicodeError
      |         +-- UnicodeDecodeError
      |         +-- UnicodeEncodeError
      |         +-- UnicodeTranslateError
      +-- Warning
           +-- DeprecationWarning
           +-- PendingDeprecationWarning
           +-- RuntimeWarning
           +-- SyntaxWarning
           +-- UserWarning
           +-- FutureWarning
           +-- ImportWarning
           +-- UnicodeWarning
           +-- BytesWarning
           +-- ResourceWarning

注意: 当捕获异常或者决定应该继承哪个异常类时,这个层次关系非常有用。

版权声明:进步始于交流,收获源于分享!纯正开源之美,有趣、好玩、靠谱。。。作者:一去丶二三里 博客地址:http://blog.csdn.net/liang19890820

相关文章推荐

Python 快速入门

第一次接触 Python 时,是在刚毕业不久,那时公司在做一个网盘客户端,需要调研一些 GUI 框架。由于当时 Python 很火(当然,现在也一样),便尝试了一下 PyQt(Python 语言和 Q...

Life is short, You need Python

『人生苦短,我用 Python』,作为一个 Pythoner,这句话再熟悉不过了。 一起用心来感受下吧!只看图,不说话。...

Python文件与异常--处理错误

Python文件与异常–处理错误 代码块head frist python 第三章学习代码:# -*- coding: utf-8 -*- """ Created on Mon Mar 27 16:2...

python 错误与异常

python 错误与异常错误 语法错误 不符合解释器和编译器 逻辑错误 异常 程序遇到逻辑或者算法问题 运行过程中计算机错误(内存不够或者IO错误) 区别错误在执行前修改,逻辑错误无法修改运行时...

Python2.7.x 错误和异常

错误: 1、语法错误:代码不符合解释器或者编译器语法 2、逻辑错误:不完整、不合法输入、计算出现问题 异常:执行过程中出现问题导致程序无法执行 1、程序遇到逻辑或者算法问题 2、运行过程中计算机错误...

python的常见错误和异常

1 错误和异常的概念 错误:1)语法错误。代码不符合解释器或编译器语法,在执行前可以修改    2)逻辑错误。不完整或不合法输入(传递参数不合法等)或者计算出现问题(比如出现除0操作)。 异常:...

<PY><core python programming笔记>C10 错误和异常

 C10 错误和异常 10.1 异常处理 try ----catching 原因:程序可能被中止,错误可能向上层传播 目的:使程序继续运行,避免错误传播,把错误转化为“非错误” 一旦程...
  • awsxsa
  • awsxsa
  • 2014年05月23日 17:14
  • 545

解决Python2.7的UnicodeEncodeError: ‘ascii’ codec can’t encode异常错误

今天准备将某SQLite数据库的内容导出到文本文档(*.txt)中,设计的Python程序如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1...

转:python学习(异常和错误)(BeginMan)

声明:转自BeginMan 原帖地址:http://www.cnblogs.com/BeginMan/p/3171445.html一、什么是错误,什么是异常,它们两者区别这里解释如下:个人觉得很通俗...

python 错误异常处理

通常异常处理分为三大类 语法错误 语意错误 逻辑错误 语法错误 语法错误一般都是少写了些标点符号 只要console看到SyntaxError 几乎都是语法错误 语义错误 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Python 错误和异常
举报原因:
原因补充:

(最多只允许输入30个字)