python try/except/else/finally执行顺序

python中try/except/else/finally语句的完整格式:

 1 try:
 2      Normal block
 3 except A:
 4      Exception A handle
 5 except:
 6      Other exception handle
 7 else:
 8      print "else"
 9 finally:
10      print("finally")  

1,正常的情况(try语句块执行没有发生异常):

  执行顺序:

    1.1  try中的语句块,

    1.2  else语句块

    1.3  finally语句块

2,异常的情况(try语句执行发生异常):

  执行顺序:

    2.1  先执行try语句,发生异常,中断try语句块的执行;

    2.2  从第一个except处开始查找,如果找对对应的cxception则进入相应的处理分支,进行处理。如果各个except都没有找到,进入默认的except分支。

    2.3  执行finally语句块

  注:此时不执行else语句块

  3.1 try一定要执行的,finally是一定要执行的

  3.2 else和finally是可选的;如果选择了else,那么必须有except

  3.3 有try,至少有一个except

时间: 2024-08-02 22:16:19

python try/except/else/finally执行顺序的相关文章

python try except else finally 执行顺序详细分析

学习python或者其他有异常控制的编程语言, 大家很有可能说try except finally(try catch finally)的执行很简单,无非就是有异常的话执行except, finally无论是否有异常都会执行, 大致上原则是这样, 但是如果涉及到更加详细的复杂的路径,加上return 语句,就没有那么简单了. 1. 没有return 语句的情况 print 'this is a test of code path in try...except...else...finally'

python导入模块时的执行顺序

当python导入模块,执行import语句时,到底进行了什么操作?按照python的文档,她执行了如下的操作: 第一步,创建一个新的module对象(它可能包含多个module) 第二步,把这个module对象插到sys.module中 第三步,装载module的代码(如果需要,则必须先编译) 第四步,执行新的module中对应的代码. 在执行第三步时,首先需要找到module程序所在的位置,搜索的顺序是: 当前路径(以及从当前目录指定的sys.path),pythonpath,然后是pyth

python 3 mysql sql逻辑查询语句执行顺序

python 3 mysql sql逻辑查询语句执行顺序 一 .SELECT语句关键字的定义顺序 SELECT DISTINCT <select_list> FROM <left_table> <join_type> JOIN <right_table> ON <join_condition> WHERE <where_condition> GROUP BY <group_by_list> HAVING <havin

python unittest控制用例的执行顺序

为什么要进行顺序控制呢?使用过testng的同学就知道,它相对于junit来说有更强大的功能,其中的一个功能就是依赖测试.什么是依赖测试呢?简单的说一下就是,A方法运行时,其中有个变量的取值是B方法的动态产出值.这样就必须先执行B方法.testng的test方法有dependson属性来制定方法的依赖.但是向python的unittet框架,他类似于junit,没有依赖测试的功能.unittest的main()方法执行用例的顺序是按照测试类.测试方法的名字的ASCII顺序来执行测试方法.如果想要

Selenium2+python自动化52-unittest执行顺序

前言 很多初学者在使用unittest框架时候,不清楚用例的执行顺序到底是怎样的.对测试类里面的类和方法分不清楚,不知道什么时候执行,什么时候不执行. 本篇通过最简单案例详细讲解unittest执行顺序. 一.案例分析 1.先定义一个测试类,里面写几个简单的case # coding:utf-8import unittestimport timeclass Test(unittest.TestCase):    def setUp(self):        print "start!"

Selenium2+python自动化52-unittest执行顺序【转载】

本篇转自博客:上海-悠悠 原文地址:http://www.cnblogs.com/yoyoketang/tag/unittest/ 前言 很多初学者在使用unittest框架时候,不清楚用例的执行顺序到底是怎样的.对测试类里面的类和方法分不清楚,不知道什么时候执行,什么时候不执行. 本篇通过最简单案例详细讲解unittest执行顺序. 一.案例分析 1.先定义一个测试类,里面写几个简单的case # coding:utf-8import unittestimport timeclass Test

python 中多个装饰器的执行顺序

python 中多个装饰器的执行顺序: def wrapper1(f1): print('in wrapper1') def inner1(*args,**kwargs): print('in inner1') ret = f1(*args,**kwargs) return ret return inner1 def wrapper2(f2): print('in wrapper2') def inner2(*args,**kwargs): print('in inner2') ret = f2

python+unittest 控制用例的执行顺序

unittest的main()方法执行用例的顺序是按照测试类.测试方法的名字的ASCII顺序来执行测试方法.所以可能执行的顺序和你想要的顺序不一样,可能通过下面两种方法修改执行顺序 1. 通过TestSuite按照顺序依次添加想要执行的方法 suite = unittest.TestSuite() suite.addTest(Test("test_operator_add")) suite.addTest(Test("test_operator_del")) 这样方

python之uinttest,用例执行顺序

unittest单元测试框架, 以test开头的测试用例,默认执行顺序是按照ASC码来执行 如果有类,先排序执行类,在执行类中,再排序用例顺序执行 如果想要按照指定的顺序执行测试用例. 那么就需要用到测试套件TestSuite了. 首先,要保证测试用例和执行脚本,非同一个py文件. 虽然不知道为啥,但是在同一个py文件中执行,总是会按照默认顺序执行 然后构建测试用例集 添加测试用例,再执行 实例参考: 执行结果: