Python基础---Task08:异常处理
捕获错误
try…except…else…finally…
- 首先执行try…
- 出现异常时,根据except条件先执行excecpt…,若没有满足except情况则执行else…;正常时不执行except… 和else…
- 不管是否异常,程序最终都会执行finally…
a = input('input a number:')
try:
# 先执行try缩进块,直到出现异常
print('try...')
r = 10 / int(a)
print('result:', r)
except ValueError as e:
# 若出现异常,尝试捕获可能出现的错误
print('ValueError:', e)
except ZeroDivisionError :
# e 为错误内容, 如何没有e可自设提示错误
raise ZeroDivisionError('ZeroDivisionError---division by zero')
else:
# 没有满足的错误出现时执行else
print('no error!')
finally:
# 不管异常与否,都会执行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 '
#x为0时,assert抛出AssertError
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