with语句处理异常
我们知道异常可以用 try-except-finally 语句来处理。接下来,我们介绍使用 with 语句来处理异常相关的工作。
with语句支持创建资源、抛出异常、释放资源等操作,代码简洁。
with语句格式
with 上下文表达式 [as 资源对象]: 对象操作 说明:
上下文表达式,返回一个上下文管理对象
如果指定了 as 语句,则在 as 子句中不会将对象赋给资源对象,而是将上下文管理器的 __enter__() 方法的返回值赋给资源对象。
资源对象可以是单变量,也可以是元组。
使用with语句操作文件对象
with open("/test.txt") as file:
for aline in file:
print(aline)
说明:此代码使用 with 语句打开文件。如果是顺便打开的话,把文件对象赋值给file,然后用for语句遍历并打印文件的每一行。当文件操作完成时,with 语句关闭文件。如果在执行此代码期间发生异常,with 也会关闭该文件。
这段代码使用finally语句实现如下:
try:
file = open("/test.txt")
try:
for aline in file:
print(aline)
except Exception as error:
print(error)
finally:
file.close()
except FileNotFoundError as err:
print(err)
我们也可以给with语句加上异常处理:
try:
with open("/test.txt") as file:
for aline in file:
print(aline)
except Exception as error:
print(error)
通过对比可以发现with语句的代码在处理异常时要简单很多
特别说明:
并非所有对象都可以使用 with 语句,只有支持 upper= 上下文管理协议的对象才能使用。目前支持上下文管理协议的对象如下:
file
decimal.Context
thread.LockType
threading.BoundedSemaphore
threading.Condition
threading.Lock
threading.RLock
threading.Semaphore
本文为原创文章,版权归知行编程网所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ Python none 和 0 有什么区别10/18
- ♥ python如何读取列表中元素的位置?09/13
- ♥ pickle 模块用于 Python 函数10/23
- ♥ 使用Python轻松实现手绘效果11/25
- ♥ python是怎么知道类型的12/03
- ♥ python中类的自动调用方式有哪些12/02
内容反馈