Python的异样解决机制
解决异样的几种代码构造:
try…except…else构造
如果try代码块内没有抛出异样,执行else代码块,否则执行except代码块。
try…except…else…finally构造
如果try代码块内没有抛出异样,执行else代码块,否则执行except代码块。finally代码块无论是否产生异样都会执行,罕用来开释try块中申请的资源。
graph TD
A(try) -->|程序产生异样|B(except)
A(try) -->|程序没有异样|C(else)
B --> D{finally}
C -->D{finally}
try:
n1 = int(input('请输出一个整数:'))
n2 = int(input('请输出另一个整数:'))
result = n1 / n2
except BaseException as e:
print('代码出错')
print(e)
else:
print('后果为:', result)
finally:
print('任何状况都会执行')
print('程序完结')
运行后果:
请输出一个整数:1
请输出另一个整数:4
后果为: 0.25
任何状况都会执行
程序完结
traceback模块
应用traceback模块打印异样信息
import traceback
try:
print('1.------------------')
num = 10/0
except:
traceback.print_exc()
输入后果:
Traceback (most recent call last):
File “D:\study\python-study\chap8\traceback.py”, line 5, in <module>
num = 10/0
ZeroDivisionError: division by zero
Python中常见的异样类型
异样类型 | 简述 |
---|---|
ZeroDivisionError | 除(或取模)0(所有数据类型) |
IndexError | 序列中找不到该索引 |
KeyError | 映射中找不到该键 |
NameError | 未声明/初始化对象(没有属性) |
SyntaxError | 语法错误 |
ValueError | 传入有效的参数 |
发表回复