Python基础---Task08:异常处理

mac2024-01-24  37

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: # 先执行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

最新回复(0)