码迷,mamicode.com
首页 > 编程语言 > 详细

python 同一层的try, except,finally ,执行顺序是什么

时间:2019-07-26 11:54:11      阅读:140      评论:0      收藏:0      [点我收藏+]

标签:执行顺序   com   except   class   raise   作用   finally   mic   code   

用逻辑流程图来表示这三者的执行关系吧:

  技术图片

 

  呃..画完我就后悔了,这种表示方法根本不简洁直观.

 

  简单的说,

  try  + except 的组合,大家都很清楚了:

       try 中无异常,不执行except

     try中遇到异常,就停止当前语句, 去执行except中的语句

  finally 的作用是,

    try 和 except 执行中:

      1. 执行完最后一个语句(如最后一条语句不是return)

      2. return Value  

     都会触发finally的执行.

    而在finally中的语句执行后,同样有两种情况:

      1.如果finally中有return ,那么代码就在finally中返回。

     2.如果finally中没有return ,那么代码会返回到触发finally的语句处,继续执行。

     (即是说,如果是try/except中的 return Value 触发了finally ,且finally中没有return,那么执行完finally后,会返回去执行触发了finally的那个 return Value)

    

例子: finally 中不带return 

def tef_raise():
        try:
            print("I am in ‘try‘")
            raise()
            return try
        except:
            print("I am in ‘except‘")
            return except
        finally:
            print("I am in ‘finally ,and i don‘t return‘")

输出: 

  I am in ‘try‘
  I am in ‘except‘
  I am in ‘finally ,and i don‘t return‘
  ‘except‘

可见,执行顺序是 try->except->finally->except中的 return 

 

例子:finally中有return 

def tef_raise():
        try:
            print("I am in ‘try‘")
            raise()
            return try
        except:
            print("I am in ‘except‘")
            return except
        finally:
            print("I am in ‘finally")
            return finally

输出:

  I am in ‘try‘
  I am in ‘except‘
  I am in ‘finally
  ‘finally‘

python 同一层的try, except,finally ,执行顺序是什么

标签:执行顺序   com   except   class   raise   作用   finally   mic   code   

原文地址:https://www.cnblogs.com/stonenox/p/11249133.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!