Python-程序的异常处理

异常是什么?

异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行。一般情况下,在Python无法正常处理程序时就会发生一个异常。
异常是Python对象,表示一个错误。当Python脚本发生异常时我们需要捕获处理它,否则程序会终止执行。
举个例子:

num = eval(input("please input a number: "))
print(num**2)

当输入为一个数字时:

>>> 
please input a number: 100
10000

当输入位字符串时:

please input a number: no
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<string>", line 1, in <module>
NameError: name 'no' is not defined
>>> 

此时python发生了异常,解释器返回异常信息,并退出程序。在异常信息中,Traceback为回溯标记,NameError为异常类型,是最重要的部分,:后紧跟着的是异常内容提醒。

常见的异常类型

名称 描述
ImportError 导入模块/对象失败
NameError 未声明/初始化对象 (没有属性)
SyntaxError Python 语法错误
IndentationError 缩进错误
TabError Tab 和空格混用
SystemError 一般的解释器系统错误
TypeError 对类型无效的操作
ValueError 传入无效的参数
UnicodeError Unicode 相关的错误
FloatingPointError 浮点计算错误
OverflowError 数值运算超出最大限制
ZeroDivisionError 除(或取模)零 (所有数据类型)
EOFError 没有内建输入,到达EOF 标记
EnvironmentError 操作系统错误的基类
IOError 输入/输出操作失败

异常处理: try-expect语句

基本语法格式:

try:
	num = eval(input("please input a number: "))
	print(num**2)
except NameError:
	print("input error!! please input another number! ")

再次输入no得到如下结果:

please input a number: no
input error!! please input another number!

异常的高级用法

1.多个except语句

try:
	<语句块1>
except <异常类型1>:
	<语句块2>
...
except <异常类型n>:
	<语句块n>
except <异常类型n+1>:
	<语句块n+1>

2.配合else和finally保留字使用

try:
	<语句块1>
except <异常类型1>:
	<语句块2>
else:
	<语句块3>
finally:
	<语句块4>

else:当try中语句块1正常执行结束其没有异常时执行,可以看作是对try语句块正常执行后的一种追加处理。
finally:总会执行,可以将语句块1的一些收尾工作放在这里,例如关闭文件等。

异常和错误

异常和错误是两个相似但不同的概念,二者哦度可能引起程序执行错误推出,属于程序没有考虑到的例外情况。然而,绝大多数不可控因素是可以预见的,这种可以预见的例外情况称为“异常”(checked expection),发生后经过妥善处理可以继续执行。
另一些因为逻辑产生的不可与贱的例外情况称为“错误”(unchecked exception),错误发生后程序无法恢复执行。

猜你喜欢

转载自blog.csdn.net/weixin_40406018/article/details/89218873