栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python:try与as处理异常

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python:try与as处理异常

with…as,是python控制流语句,像 if ,while一样。
with…as语句是简化版的try except finally语句。

其它知识点:assert、raise

try
try:
	block A
except e1:
	block B # block A 在执行过程中发生e1异常时执行该语句
except e2:
	block C # block A 在执行过程中发生e2异常时执行该语句
except:
	block D # block A在执行过程中发生,但该异常是e1或e2之外的异常
else:
	block E  # 没有异常时(即block A顺利执行),将会执行该语句
finally:
	block F  # 无论有没有异常都会执行该语句
  1. 在这里,e1、e2是在编写过程中可预见的异常,如分子为0,语法错误等。
  2. 在except后写明异常类型后则只响应该类型的异常。
  3. else中的语句只有不发生异常时才会执行。
  4. finally中的语句无论是否发生异常都会执行。

1.使用 else 子句比把所有的语句都放在 try 子句里面要好,这样可以避免
一些意想不到,而 except 又无法捕获的异常。
2.异常处理并不仅仅处理那些直接发生在 try 子句中的异常,而且还能处理
子句中调用的函数(甚至间接调用的函数)里抛出的异常

我们可以利用最后一个没有设定异常类型的except,将异常信息输出。
Python3 错误和异常

import sys
a=1
b=0
try:
    print(a/b)
except:
    print("手动输出的异常 Unexpected error:", sys.exc_info()[0])
    print('也可以使用 raise 来抛出异常')
    raise

with···as语句

从解释器的角度去理解with语句执行流程。

with expression [as variable]:  
    with-block  

看这个结构我们可以获取至少两点信息:

  1. as variable可以省略
  2. 有一个句块要执行

这样的一段代码可以称为一个上下文(context),在执行with语句时,解释器会先求出表达式的值,这个值(对象)是一个上下文管理器,并且假设这个对象拥有如下两个类魔术方法:

def __enter__():
	# 描述进入上下文的动作
	pass

def __exit__():
	# 描述退出上下文的动作
	pass

with语句在求出这个上下文管理器对象之后,自动执行进入方法,并将这个对象的返回值赋值于 as 之后的变量,然后执行语句块。然后在退出上下文前,自动执行对象的退出方法。

python系统和标准库的一些类型定义了这对操作,可以直接用于with语句。比如文件对象就直接支持这一对操作,因此可以用在with语句的头部。

如果你也有类似的计算过程需要抽取出来,那么可以自定义一个类,并且包含进入、退出方法。

Python with 关键字

Python 异常处理

https://blog.csdn.net/qiqicos/article/details/79200089

https://blog.csdn.net/qiqicos/article/details/79208039

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/932316.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号