异常模块
- 一、异常
- 1.异常捕获
- 2.异常类型捕获
- 3.try-except-else
- 4.try-finally
- 5.主动触发异常
- 6.断言
一、异常
1.异常捕获
当Python无法正常处理程序时就会发生一个异常,会影响程序的正常执行。
异常也是Python对象,表示一个错误
当Python脚本有发生异常的可能时,就需要捕获异常,避免程序终止执行。
try:
正常程序执行此块代码
except:
抛出错误执行此代码块
2.异常类型捕获
但是仅仅使用以上异常捕获,虽然不会报错终止程序。但是无法记录下具体异常种类。如需记录下具体异常种类,则需要捕获该具体异常。
try:
pass
except 当前异常对象 as e: # e = 当前异常对象
print(e)
栗子:
while True:
try:
shu = int(input('请输入转换金额:'))
break
except ValueError as e:
print('输入格式不正确,请重新输入。', e)
except Exception as e:
print('出现未知错误')
注意:使用Exception可以捕获所有异常类型
细分方法一般用于载入日志
3.try-except-else
• 如果抛出异常执行except内部代码
• 如果程序正常执行else内部代
try:
shu = int(input('请输入转换金额:'))
except ValueError as e:
print('输入格式不正确,请重新输入。', e)
except Exception as e:
print('出现未知错误')
else:
print('程序正常时所执行的代码')
4.try-finally
不管程序有无发生异常,都将执行finally内部代码。
最后执行,一般用于最后关闭文件操作
5.主动触发异常
在实际开发中,在程序不满足某条件时,通常会主动抛出异常。
raise Exception()
练习
判断煎饼熟了没,当烹饪时间小于5时,则主动触发没熟异常;否则熟了。
def test(level):
if level<5:
raise Exception("没熟没熟")
try:
test(5)
except Exception as e:
print(e)
else:
print("熟了 请吃")
自定义异常
当需要自定义满足一些规则时,就可以自定义异常。
自定义异常通过创建一个新的异常类,自定义名字与内容,并且需要继承Exception类实现。
练习
自定义OldAmyError异常类
class OldAmyError(Exception):
def __init__(self,msg):
self.message = msg
def __str__(self):
return self.message
e = OldAmyError("我错了")
print(e)
try:
raise OldAmyError("我错了")
except OldAmyError as e:
print(e)
6.断言
assert断言用于判断一个表达式,当表达式条件为False时触发断言异常AssertionError。
若不满足断言条件则使程序报错
assert 断言
注意,断言用于强制用户服从,可捕获,但是一般不捕获。