python中处理异常的关键字,python异常处理中触发自定义异常的关键字是
部分内容选自菜鸟教程。
和《疯狂Python讲义-李刚》
python的异常处理机制已经成为判断一门语言成熟与否的标准。Python的异常处理机制主要依赖于五个关键词:try、except、else、finally和raise,其中:
try关键字后缩进的代码块简称try块,可能抛出异常的代码放在里面;except之后对应异常类型和一个代码块,用来表示except块处理这种类型的代码块;可以在多个except块后放一个else块,表示即使没有异常,程序也会执行else块;最后可以跟一个Finally块,用来回收try块中打开的物理资源,异常机制会保证finally块始终被执行;Raise用于引发实际的异常,raise可以单独作为一个语句来引发特定的异常对象。Try语句的工作方式如下:
首先,执行try子句(关键字try和关键字except之间的语句)
如果没有异常发生,except子句被忽略,try子句在执行后结束。
如果在try子句的执行过程中出现异常,try子句的其余部分将被忽略。如果异常的类型与except后的名称匹配,将执行相应的except子句。执行最后一条try语句后的代码。
如果一个异常不匹配任何except,该异常将被传递到上面的try。
Except语句不是必须的,finally语句也不是必须的,但其中必须有一个,否则没有try的意义。
不建议在没有清晰逻辑的情况下捕捉所有异常。有可能你隐藏了一个严重的问题。
【外链图像传输失败,源站可能有防盗链机制。建议保存图片直接上传(IMG-kbqhdsa 5-1580800177172)(542 fc 04789 ac42b 495 b 16fd 2121948 be)]
抛出异常Python使用raise语句抛出指定的异常。
raise语法格式如下:
引发[exception [,args [,traceback]]如果x大于5,以下实例将触发异常:
X=10if x 5:引发异常( x不能大于5。x的值是:{} 。format(x))执行上面的代码会触发一个异常:
Trace back(最近一次调用last):文件“test.py”,第3行,在模块中引发异常(“x不能大于5。x的值是:{} 。format(x))异常:x不能大于5。x的值是:10提高。唯一的参数指定要引发的异常。它必须是异常实例或异常类(即Exception的子类)。
如果你只是想知道这是否抛出异常,不想处理它,那么一个简单的raise语句就可以再次抛出。
try:引发name error( HiThere )except name error:print(一个异常飞过!)抛出一个异常飞逝而过!Traceback(最近一次调用last):文件 stdin ,第2行,in?错误:出现用户定义的异常
通过创建新的异常类,您可以拥有自己的异常。该异常继承自Exception类,可以直接或间接继承,例如:
class My error(Exception):def _ _ init _ _(self,value):self . value=value def _ _ str _ _(self):return repr(self . value)try:raise My error(2 * 2)except My error as e:print( My Exception occurs,value:,e . value)My Exception occurs,value: 4 raise MyError(oops!)Traceback(最近一次调用last):文件 stdin ,第1行,in?__main__。我的错误:“哎呀!”在本例中,类异常的缺省值init()被覆盖。
当创建模块时有可能抛出各种不同的异常时,通常的做法是为这个包构建一个基本的异常类,然后基于这个基本类为不同的错误情况创建不同的子类:
类错误(异常):此模块中异常的基类传递类输入恐怖(错误):输入中的错误引发了 异常属性:表达式-出现错误的输入表达式消息-错误说明 def __init__(self,expression,message):self。表情=表达自我。消息=消息类转换错误(错误): 当操作尝试不允许的状态转换时引发。属性:上一个-转换开始时的状态下一个-尝试的新状态消息-解释为什么不允许特定转换 def __init__(self,previous,next,message): self.previous=上一个self.next=下一个self.message=消息大多数的异常的名字都以错误结尾,就跟标准的异常命名一样。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。