Python的异常处理机制
案例1:
a = int(input('请输入第一个整数'))
b = int(input('请输入第二个整数'))
result = a / b
print('结果为:', result)
print('程序结束')
以上代码可能存在除数为0的报错情况。
优化:
try-except结构
try:
...
...
...#可能会出现异常的代码
except Exception:
...
...
...#异常处理代码
try:
a = int(input('请输入第一个整数'))
b = int(input('请输入第二个整数'))
result = a / b
print('结果为:', result)
except ZeroDivisionError:
peint('对不起,除数不能为0')
print('程序结束')
以上代码仍存在没有输入参数的情况。
多个except结构
try:
...
...
...#可能会出现异常的代码
except Exception1:
...
...
...#异常处理代码
except Exception2:
...
...
...#异常处理代码
......
try...except...else结构
如果try块中没有抛出异常,则执行else块,如果try中抛出异常,则执行except块。
try:
a = int(input('请输入第一个整数'))
b = int(input('请输入第二个整数'))
result = a / b
except BaseExecption as e:
peint('出错了', e)
else:
print('结果为:', result)
try... except...else...finally结构
finally块无论是否报错都会被执行,常用来释放try块中申请的资源。
try:
a = int(input('请输入第一个整数'))
b = int(input('请输入第二个整数'))
result = a / b
except BaseExecption as e:
peint('出错了', e)
else:
print('结果为:', result)
finally:
print('谢谢您的使用')
traceback模块
使用traceback模块打印异常信息。
import traceback
try:
print('1.-------')
num = 10 / 0
except:
traceback.peint_exc()
Python常见的异常类型
ZeroDivisionError
除(或者取模)零(所有类型)。
IndexError
序列中没有此索引。
KeyError
映射中没有这个键。
NameError
未声明/初始化对象(没有属性)。
SyntaxError
Python语法错误。
ValueError
传入无效的参数。