赞
踩
在程序中,当Python检测到一个错误时,解释器就会指出当前流程已无法继续执行下去,这时就出现了异常。例如,使用print()函数输出一个未定义的变量值,具体如下所示:
print(name)
1
• 在Python程序中,如果出现异常,而异常对象并未被捕获或处理,程序就会用自动回溯,返回一种错误信息,并终止执行,上述语句返回的错误信息如下:
Traceback (most recent call last):
File “D:/1000phone/test.py”, line 1, in
print(name)
NameError: name ‘name’ is not defined
• 上述信息提示name变量名未定义,NameError为Python的内建异常类。异常是指因为程序出错而在正常控制流以外采取的行为,即异常是一个事件,该事件可能会在程序执行过程中发生并影响程序的正常执行。
13.1.2 异常类
• Python为了区分不同的异常,其中内置了许多异常类,常见的异常类如表所示。
在这里插入图片描述
在这里插入图片描述
• 在表中,BaseException是异常的顶级类,但用户定义的类不能直接继承这个类而是要继承Exception。Exception类是与应用相关异常的顶层基类,除了系统退出事件类(SystemExit、KeyboardInterrupt和GeneratorExit)之外,几乎所有用户定义的类都应该继承自这个类,而不是BaseException类。
13.2 捕获与处理异常
• 为了防止程序运行中遇到异常而意外终止,开发时应对可能出现的异常进行捕获并处理。Python程序使用try、except、else、finally这4个关键字来实现异常的捕获与处理。
13.2.1 try-except语句
• try-except语句可以捕获异常并进行处理,其语法格式如下:
try:
except 异常类名:
• 当try语句块中某条语句出现异常时,程序就不再执行try语句块中后面的语句,而是直接执行except语句块,如例所示。
1 try:
2 a = float(input(‘请输入被除数:’))
3 b = float(input(‘请输入除数:’))
4 print(a, ‘/’, b, ‘结果为’, a / b)
5 print(‘运算结束’)
6 except ZeroDivisionError:
7 print(‘除数不能为 0’)
8 print(‘程序结束’)
• 需要注意的是,上例程序只能捕捉except后面的异常类,如果发生其他类型异常,程序依然会终止。例如,运行上例程序,输入ab再回车,则程序出现错误,如图所示。
在这里插入图片描述
• 在图中,错误信息提示字符串类型不能转化为浮点型。为了保证程序正常运行,此时就需要捕
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。