python之异常处理及程序调试

1. Python中常见的异常

异常 描述
NameError 尝试访问一个没有声明的变量引发的错误
IndexError 索引超出序列范围引发的错误
IndentationError 缩进错误
ValueError 传入的值错误
KeyError 请求一个不存在的字典关键字引发的错误
IOError 输入输出错误(如要读取的文件不存在)
ImportError 当import语句无法找到模块或from无法在模块中找到相应的名称时引发的错误
AttributeError 尝试访问未知的对象属性引发的错误
TypeError 类型不合适引发的错误
MemoryError 内存不足
ZeroDivisionError 除数为0引发的错误
BaseException 所有异常的基类
SystemExit 解释器请求退出
KeyboardInterrupt 用户中断执行(通常是输入^C)
Exception 常规错误的基类
StopIteration 迭代器没有更多的值
GeneratorExit 生成器(generator)发生异常来通知退出
ArithmeticError 所有数值计算错误的基类
StandardError 所有的内建标准异常的基类
FloatingPointError 浮点计算错误
OverflowError 数值运算超出最大限制
AssertionError 断言语句失败
EOFError 没有内建输入,到达EOF 标记
OSError 操作系统错误
LookupError 无效数据查询的基类
MemoryError 内存溢出错误(对于Python 解释器不是致命的)
UnboundLocalError 访问未初始化的本地变量
SyntaxError Python 语法错误
TabError Tab 和空格混用
UnicodeError Unicode 相关的错误
UnicodeDecodeError Unicode 解码时的错误
UnicodeEncodeError Unicode 编码时错误
UnicodeTranslateError Unicode 转换时错误
Warning 警告的基类
UserWarning 用户代码生成的警告

2. try…except语句

在Python中,提供了try…except语句捕获并处理异常,具体的语法格式如下:

try:
	block1
except ExceptionName [as alias]:
	block2

参数说明:

  • block1:表示可能出现错误的代码块。
  • ExceptionName [as alias]:可选参数,用于指定要捕获的异常。其中,ExceptionName表示要捕获的异常名称,如果在其右侧加上as alias,则表示为当前的异常指定一一个别名, 通过该别名,可以记录异常的具体内容。

3. try…except…finally语句

完整的异常处理语句应该包含finally 代码块,其语法格式如下:

try:

	block1

except [ExceptionName [as alias]]:

	block2

finally:

	block3

对于try…except…finally语句的理解并不复杂,它只是比try…except语句多了一个finally语句,如果程序中有一些在任何情形中都必须执行的代码,那么就可以将它们放在finally代码块中。

4. 使用raise语句抛出异常

如果某个函数或方法可能会产生异常,但不想在当前函数或方法中处理这个异常,则可以使用raise语句在函数或方法中抛出异常。Raise 语句的语法格式如下:

raise [ExceptionName[(reason)]]

其中,ExceptionName[(reason)]为可 选参数,用于指定抛出的异常名称以及异常信息的相关描述。如果省略,就会把当前的错误原样抛出。

5. 使用assert语句调试程序

Python提供了assert 语句来调试程序,assert 语句的基本语法如下:

assert expression [,reason]

参数说明:

  • expression: 条件表达式,如果该表达式的值为真时,什么都不做,如果为假时,则抛出AssertionError异常。
  • reason:可选参数,用于对判断条件进行描述,为了以后更好地知道哪里出现了问题。

你可能感兴趣的:(python,python)