python 异常处理 try except else finally raise
异常处理
捕捉异常可以使用try/except语句。
try/except语句用来检测try语句块中的错误,从而让except语句捕获异常信息并处理。
如果你不想在异常发生时结束你的程序,只需在try里捕获它。
语法:
以下为简单的try....except...else的语法:
a = 1 try: 2 > a #真 except Exception as e: print('try的代码为假,走except') else: print("try的代码为真,才走else") finally: print('try的代码错与不错都走finally这一步') print('实验try except')
返回
try的代码为真,才走else
try的代码错与不错都走finally这一步
实验try except
a = 1 try: 'hahaha' > a #假 except Exception as e: print('try的代码为假,走except,错误信息:',e) else: print("try的代码为真,才走else") finally: print('try的代码错与不错都走finally这一步') print('实验try except')
返回
try的代码为假,走except,错误信息: '>' not supported between instances of 'str' and 'int'
try的代码错与不错都走finally这一步
实验try except
触发异常
raise语句自己触发异常,触发异常后,后面的代码就不会再执行
a = 2 try: 'hhhh'>a except Exception as e: print('try的代码为假,走except,错误信息:',e) raise Exception("raise主动弹出错误信息,以后的代码将不会被执行") else: print("try的代码为真,才走else") finally: print('try的代码错与不错都走finally这一步') print('实验try except') print('raise触发异常后,后面的代码就不会再执行!!!!!!!')
返回
Traceback (most recent call last): try的代码为假,走except,错误信息: '>' not supported between instances of 'str' and 'int' File "/Users/PycharmProjects/FirstScrip/op_json.py", line 20, in <module> try的代码错与不错都走finally这一步 'hhhh'>a TypeError: '>' not supported between instances of 'str' and 'int' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/Users/PycharmProjects/FirstScrip/op_json.py", line 23, in <module> raise Exception("raise主动弹出错误信息,以后的代码将不会被执行") Exception: raise主动弹出错误信息,以后的代码将不会被执行
再来个例子
def my( a ): if a < 1: raise Exception("Invalid level!") # 触发异常后,后面的代码就不会再执行 try: my(0) # 触发异常 except Exception as e: print (1,e) else: print (2)
返回
1 Invalid level!