Python基础---Task08:异常处理
捕获错误try...except...else...finally...assert断言
捕获错误
try…except…else…finally…
首先执行try…出现异常时,根据except条件先执行excecpt…,若没有满足except情况则执行else…;正常时不执行except… 和else…不管是否异常,程序最终都会执行finally…
a
= input('input a number:')
try:
print('try...')
r
= 10 / int(a
)
print('result:', r
)
except ValueError
as e
:
print('ValueError:', e
)
except ZeroDivisionError
:
raise ZeroDivisionError
('ZeroDivisionError---division by zero')
else:
print('no error!')
finally:
print('finally...')
print('END')
>> input a number
:0
>> ZeroDivisionError
: ZeroDivisionError
---division by zero
注意:Pyth在这里插入代码片on所有的错误都是从BaseException类派生的, 常见的错误类型和继承关系:
https://docs.python.org/3/library/exceptions.html#exception-hierarchy
try…except…finally…可越多层捕获到错误源头,就像shell里的错误检索一样!
assert断言
格式:assert <条件>,'条件不满足时的提示语’
def divide(x
):
x
= int(x
)
assert x
!=0,'x cannot be zero '
print('assert is done')
return 10/x
def errortest():
try:
divide
('0')
except Exception
:
raise ValueError
('x cannot be zero')
errortest
()
>> ValueError
: x cannot be zero
注意:貌似AssertError 比 ValueError先出现,但程序默认先抛出ValueError
参考文献: 廖雪峰python教程: https://www.liaoxuefeng.com/wiki/1016959663602400/1017598873256736
10 days