python抛出异常和捕获异常,在python中,可以用异常处理捕获程序中的所有错误
也就是异常的异常状态。在Python中,exception对象用于表示异常。如果在编译或运行程序的过程中出现错误,程序的执行过程会发生变化,抛出异常对象,程序流程进入异常处理。如果异常对象没有被处理或捕获,程序将执行回溯以终止程序。
1 捕捉一个异常
捕捉异常。以零为除数得到ZeroDivisionError异常,
打印(1/0)
比如程序的连续执行并不会因为异常而停止,所以在异常发生时会处理异常并输出异常内容:
尝试:
打印(1/0)
除了ZeroDivisionError as e:
打印(e)
2 捕捉多个异常
捕获多个异常,以ZeroDivisionError和TypeError为例。应用场景:
可以用来捕获几个指定的对我们程序需求有用的异常,当这些异常产生时,我们会执行相应的操作。
指定几个不影响程序最终要求,可以忽略的例外。这个异常产生时忽略,如果产生其他异常,就需要重新调试。
对于范围(2):中的I
打印(一)
尝试:
如果i==0:
打印(1/0)
else:
打印(1英尺)
除了(ZeroDivisionError,TypeError)作为e:
打印(e)
3 Exception捕捉所有异常
如果异常的种类不确定,可以用Exception来指代各种异常。
以一个数值和一个字符串相加为例:
尝试:
打印(1 strstrstr )
e:除外
打印(e)
4 raise主动触发异常
您可以使用raise关键字主动触发异常,并且可以在括号中添加异常的说明。执行效果如图所示:
引发ZeroDivisionError(这是一个非常非常非常非常大的异常。)
Raise可用于创建自己的异常类来定义新的异常。当程序触发某个条件(如果为真)时,引发一个定义的异常。
例如,定义一个名为DangerousError的异常:
类危险错误(异常):
def __init__(self,msg):
self.msg=msg
def __str__(self):
返回self.msg
如果为真:
引发DangerousError(异常警告!例外!例外!例外!例外!\n异常警告!例外!例外!例外!例外!”)
else:
引发DangerousError(请收回代码并重写。)
5 try…except…else…finally 逻辑
Try后面是要处理的部分
如果try部分触发的异常名称在except(或Exception)之后,则执行Exception之后的代码;
除了可以不止一个,数量不限。匹配时,第一个会跟着下一个。
如果存在触发异常,但异常与except不匹配,仍会报错;
类危险错误(异常):
def __init__(self,msg):
self.msg=msg
def __str__(self):
返回self.msg
AError=DangerousError(危险错误)
BError=DangerousError( DangerousError b错误)
CError=DangerousError( DangerousError )
Elist=[AError,BError,CError,TypeError(1233211234567)]
对于范围(4):中的I
打印(一)
尝试:
提升Elist[i]
除了e:的危险错误
打印(e)
如图所示,处理了前三个异常,但没有处理第四个异常,从而导致错误。
当try后的代码没有发现异常时,执行else后的代码。
对于范围(4):中的I
尝试:
打印(一)
除了危险用户错误:
打印(生成异常)
else:
打印(一切都好。)
无论异常处理的结果如何,最终都会执行后面的代码。虽然
对于范围(4):中的I
尝试:
如果我3:
打印(一)
else:
打印(一)
引发错误
除了危险用户错误:
打印(生成异常)
else:
打印(一切都好。)
最后:
打印(异常处理完成。)
当在try…except部分检测到不匹配的异常时,程序在最终运行后结束执行,并报告一个异常:
以这个例子为例,第二个异常TypeError(1233211234567 )与DangerousError不匹配。所以循环只执行两次,就完成了‘输出两次’的过程。节目结束后。最外面的印刷(“Hello World!”)从不执行。
Elist=[AError,TypeError(1233211234567 ),BError,CError]
对于范围(4):中的I
打印(一)
尝试:
提升Elist[i]
除了e:的危险错误
打印(e)
最后:
打印(“处理完成。”)
print(hello world!)
这就是这篇关于python异常捕获过程的文章。有关python异常捕获的更多信息,请搜索流行的IT软件开发工作室以前的文章或继续浏览下面的相关文章。希望你以后能支持风行IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。