python中的try/except/else/finally语句

与其他语言相同,在python中,try/except语句主要是用于处理程序正常执行过程中出现的一些异常情况,如语法错误(python作为脚本语言没有编译的环节,在执行过程中对语法进行检测,出错后发出异常消息)、数据除零错误、从未定义的变量上取值等;而try/finally语句则主要用于在无论是否发生异常情况,都需要执行一些清理工作的场合,如在通信过程中,无论通信是否发生错误,都需要在通信完成或者发生错误时关闭网络连接。尽管try/except和try/finally的作用不同,但是在编程实践中通常可以把它们组合在一起使用try/except/else/finally的形式来实现稳定性和灵活性更好的设计。

默认情况下,在程序段的执行过程中,如果没有提供try/except的处理,脚本文件执行过程中所产生的异常消息会自动发送给程序调用端,如python shell,而python shell对异常消息的默认处理则是终止程序的执行并打印具体的出错信息。这也是在python shell中执行程序错误后所出现的出错打印信息的由来。

python中try/except/else/finally语句的完整格式如下所示:

try:

Normal execution block

except A:
     Exception A handle

except B:

Exception B handle

except:

Other exception handle

else:
     if no exception,get here

finally:
     print("finally")

说明:

正常执行的程序在try下面的Normal execution block执行块中执行,在执行过程中如果发生了异常,则中断当前在Normal execution block中的执行跳转到对应的异常处理块中开始执行;

python从第一个except X处开始查找,如果找到了对应的exception类型则进入其提供的exception handle中进行处理,如果没有找到则直接进入except块处进行处理。except块是可选项,如果没有提供,该exception将会被提交给python进行默认处理,处理方式则是终止应用程序并打印提示信息;

如果在Normal execution block执行块中执行过程中没有发生任何异常,则在执行完Normal execution block后会进入else执行块中(如果存在的话)执行。

无论是否发生了异常,只要提供了finally语句,以上try/except/else/finally代码块执行的最后一步总是执行finally所对应的代码块。

需要注意的是:

1.在上面所示的完整语句中try/except/else/finally所出现的顺序必须是try-->except X-->except-->else-->finally,即所有的except必须在else和finally之前,else(如果有的话)必须在finally之前,而except X必须在except之前。否则会出现语法错误。

2.对于上面所展示的try/except完整格式而言,else和finally都是可选的,而不是必须的,但是如果存在的话else必须在finally之前,finally(如果存在的话)必须在整个语句的最后位置。

3.在上面的完整语句中,else语句的存在必须以except X或者except语句为前提,如果在没有except语句的try block中使用else语句会引发语法错误。也就是说else不能与try/finally配合使用。

4.except的使用要非常小心,慎用。

class AError(Exception):
     """AError---exception"""
     print(‘AError‘)

try:

#raise AError
     asdas(‘123‘)

except AError:
     print("Get AError")
except:
     print("exception")     
else:
     print("else")
finally:
     print("finally")     
print("hello wolrd")

在上面的代码中,Normal execution block中出现了语法错误,但是由于使用了except语句,该语法错误就被掩盖掉了。因此在使用try/except是最好还是要非常清楚的知道Normal execution block中有可能出现的异常类型以进行针对性的处理

时间: 2024-10-14 20:44:23

python中的try/except/else/finally语句的相关文章

Python中关于导入(import)语句的使用说明

在所有的语言中,语言的开发者都会为我们提供强大的库文件供我们调用,通过使用这些库文件,我们才可以把程序完美的运行起来,既然要用到库文件,我们就要导入我们需要使用的库文件,因为,机器是不知道我们想基于哪些库进行程序的编写的.在导入库的时候,不同的语言有自己的风格.例如在C/C++等语言中,我们使用#include <>或者#include ""来导入库或者头文件.那么在python中我们怎么导入库呢. 首先,在Python中,我们可以导入三种库:Python标准模块,Pyth

python中的try/except/else/finally语句--自我小结

def main():      try:        print "try"        return True    except:        print "except"    finally:        print "finally"        print "main" 输出: try finally 就算try中有return语句,最终的finally也会被执行. 其他人的一些好的总结: http:/

Python中三种基本结构的语句

选择语句 if 条件判断 : # 条件可以加括号也可以不加括号 -- else: -- Python中没有switch语句这是可以使用if exp:.... elif exp:来代替 1 if 判断条件1: 2 执行语句1-- 3 elif 判断条件2: 4 执行语句2-- 5 elif 判断条件3: 6 执行语句3-- 7 else: 8 执行语句4-- Python 循环语句 while 循环 在给定的判断条件为 true 时执行循环体,否则退出循环体. for 循环 重复执行语句 嵌套循环

python 中的 try/except/else/finally语句

1.python中try/except/else/finally正常的语句是这样的: try: normal excute block except A: Except A handle except B: Except B handle except: other exception handle else: if no exception,get here finally: print(hello world) 说明: 正常执行的程序在try下面执行normal excute block执行

【转】Python中的条件选择和循环语句

转:http://www.cnblogs.com/dolphin0520/archive/2013/03/13/2954682.html 一.条件选择语句 Python中条件选择语句的关键字为:if .elif .else这三个.其基本形式如下: if condition: block elif condition: block ... else: block 其中elif和else语句块是可选的.对于if和elif只有condition为True时,该分支语句才执行,只有当if和所有的elif

Python中执行sql脚本时GO语句出错问题

sql脚本: --创建链接服务器 (其中db2server是DB2的ip地址或服务器名)exec sp_addlinkedserver 'srv_lnk', '', 'SQLOLEDB','10.138.60.94'exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'sa','123456' Go--数据导入(表B存在) --Insert into srv_lnk.sys.Estamp.EstampConfig(field1,field2)INSE

Python中for else和while else语句学习心得

先比较两段代码: for和if else语句: for else语句: while else语句: 总结: while--(break)--else--语句:简单说,和for--(break)--else--语句类似. # 如果在while循环中执行break语句,将直接终止循环,不执行else子句. # 如果循环中未执行break语句,那么在循环结束后将会执行else语句. # 与其说是while/for和else的搭配,不如说是break和else的搭配. 原文地址:https://www.

Python中的类(classes)

Python的类机制使用尽可能少的新语法和语义将类引入语言.python的类提供了面向对象程序设计语言所有的 标准特性:类继承机制允许有多个基类,一个派生类可以覆盖基类中的任何方法,一个方法可以使用相同的名字调用 基类中的方法. Table of Contents 1 名字和对象 2 Python的域(scopes)和名称空间(namespaces) 3 初识类 3.1 定义类 3.2 类对象 3.3 实例化对象 3.4 方法对象 4 漫谈 5 派生 6 多重继承 7 私有变量和类局部引用 8

你真的了解python中的换行以及转义吗?

python中的分号 在python中默认是以换行来标志一行语句的结束. a = "xxxx" print(a) # xxxx 这段代码很简单,因为a =?"xxxx"后面已经没有内容了是一个换行,那么就代表这个语句结束了.但是在python中我们还可以指定分号,来指定该语句结束了. a = "xxxx" ; print(a) ; b = 1; print(b) # 输出内容 """ xxxx 1 "&qu