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!

 

posted @ 2018-03-16 14:38  水中一粒沙  阅读(497)  评论(0编辑  收藏  举报