Python基础:异常
当python检测到一个错误时,解释器就无法继续执行了,反而出现了一些错误的提示,这就是所谓的“异常”。
1、捕获异常
语法:
try: 可能发生错误的代码 except: 如果出现异常之后要做的事情
捕获指定异常:
try: 可能发生错误的代码 except 异常类型: 如果捕获到该异常类型执行的代码
# 如果尝试执行的代码的异常类型和要捕获的异常类型不一致,则无法捕获异常
try:
print(num)
except NameError:
print('有错误')
捕获多个指定异常:
try: print(1/0) except (NameError,ZeroDivisionError): print('有错误')
捕获异常描述信息:
try: print(num) except NameError as result: print(result)
捕获所有异常:Exception是所有程序异常类的父类
try: print(num) except Exception as result: print(result)
2、异常的else
else表示的是如果没有异常要执行的代码
try: print('执行时try里没报错就会执行后面的else') # a = 1/0 except: print('报错了,记录下') else: print('try里面的代码正常执行后,我会执行')
3、异常的finally
finally表示的是无论是否异常都要执行的代码
try: l = [2, 3] print(l[3]) a = 2/0 except BaseException as e: # BaseException是所有异常的基类 print(f'代码报错了:{e}') finally: print('不管try或者except里面执行的结果如果,这里都要执行')
4、抛出异常
指的是我猜测这些代码可能会报错,但是我没有能力去处理,或者说我不想处理。这时候可以异常抛出给调用方,由调用方根据业务进行处理
def add(a, b): if type(a) == type(b): return a + b else: raise TypeError(f'{a}和{b}类型不一致') # raise BaseException(f'{a}和{b}类型不一致')