百度推广引流多少钱一个月,aso优化师工作很赚钱吗,连云港集团网站建设,wifi已连接(无法上网)1 python异常之try/finally分句
不管try语句代码块是否发生异常#xff0c;finally分句代码块都会执行。
finally分句用于定义任何情况下都必须执行的清理操作#xff0c;将会在最后执行。
finally分句用于任何需要保证资源释放的场景。
比如#xff0c;文件操作后的关闭…1 python异常之try/finally分句
不管try语句代码块是否发生异常finally分句代码块都会执行。
finally分句用于定义任何情况下都必须执行的清理操作将会在最后执行。
finally分句用于任何需要保证资源释放的场景。
比如文件操作后的关闭文件连接数据库后的断开数据库。
1.1 基本用法
try复合语句必须有一个except分句或finally分句并且编写顺序如下
try-except-else-finally
用法
格式一
try: 语句代码块
except [type [as value]]: 语句代码块
[except [type [as value]]: 语句代码块]*
[else: 语句代码块]
[finally: 语句代码块] 格式二
try: 语句代码块
finally: 语句代码块 描述
格式一中使用else分句前必须有except分句。
不管try是否发生异常是否被处理finally都会执行包括如下情况
1 try语句代码块发生异常并被处理
2 try语句代码块发生异常并没处理
3 try语句代码块未发生异常
4 except或else处理器中发生或未发生新的异常
示例 def testfinally(s,i):try:print(s[i])except IndexError as ie:print(索引错误:,ie)else:print(执行elses[i])finally:print(执行finally)print(执行与try复合语句有相同缩进的代码块)# 1 try语句代码块发生异常并被处理 testfinally(梯阅线条,5)
索引错误: string index out of range
执行finally
执行与try复合语句有相同缩进的代码块
# 2 try语句代码块发生异常并没处理testfinally(9555,5)
执行finally
Traceback (most recent call last):File pyshell#23, line 1, in moduletestfinally(9555,5)File pyshell#21, line 3, in testfinallyprint(s[i])
TypeError: int object is not subscriptable
# 3 try语句代码块未发生异常testfinally(梯阅线条,1)
阅
执行else阅
执行finally
执行与try复合语句有相同缩进的代码块
# 4 except或else处理器中发生或未发生新的异常testfinally([1,2,3],1)
2
执行finally
Traceback (most recent call last):File pyshell#25, line 1, in moduletestfinally([1,2,3],1)File pyshell#21, line 7, in testfinallyprint(执行elses[i])
TypeError: can only concatenate str (not int) to str1.2 finally使用举例
1.2.1 关闭文件
描述
对文件操作后不管失败成功最后都要关闭文件在finally分句编写对应代码。
示例 def testfinally(filepath):try:fopen(filepath)except FileNotFoundError as fnfe:print(打开文件失败:,fnfe)except Exception as e:print(e)else:contentf.read()print(content)finally:print(执行finally)f.close() testfinally(rE:\documents\F盘\hello.txt)
hello!python!
执行finally1.2.2 关闭数据库
描述
对数据库操作后不管失败成功最后都要关闭连接在finally分句编写对应代码。
示例 def testfinally():import pymysqlconn Nonetry:conn pymysql.connect(hostlocalhost, useruser, passwordpassword, databasetest)cur conn.cursor()except pymysql.MySQLError as mse:print(连接数据库失败:, mse)except Exception as e:print(连接数据库失败:, e)else:cur.execute(SELECT * FROM users)rows cur.fetchall()for row in rows:print(row)finally:print(执行finally)if conn:conn.close()testfinally()
连接数据库失败: (2003, Cant connect to MySQL server on localhost ([WinError 10061] 由于目标计算机积极拒绝无法连接。))
执行finally