python 的自定义异常、主动抛出异常与主动捕获异常
有时候 python 自带异常不够用,如同 java,python 也可以自定义异常,并且可以手动抛出。注意,自定义异常只能由自己抛出。python 解释器是不知道用户自定义异常是什么鬼的。
主动抛出异常
raise 语句
主动抛出异常。
格式:
主动抛出异常终止程序
raise 异常名称(‘异常描述’)
raise RuntimeError(‘testError’)
主动抛出这个异常,并加以解释。
自定义异常
python 的异常分为两种.
1、内建异常,就是 python 自己定义的异常。
2、不够用,用户自定义异常,
首先看看 python 的异常继承树
我们可以看到 python 的异常有个大基类。然后继承的是 Exception。所以我们自定义类也必须继承 Exception。
#最简单的自定义异常
class FError(Exception):
pass
抛出异常、用 try-except 抛出
try:
raise FError("自定义异常")
except FError as e:
print(e)
在这里给一个简单的自定义异常类模版。
###
class CustomError(Exception):
def __init__(self,ErrorInfo):
super().__init__(self) #初始化父类
self.errorinfo=ErrorInfo
def __str__(self):
return self.errorinfo
if __name__ == '__main__':
try:
raise CustomError('客户异常')
except CustomError as e:
print(e)
主动捕获异常
#主动抛出异常,注意,当抛出异常后,如果不捕获处理,程序就会终止,不再往下执行
def raise_exception():
raise selfException("sorry,i am a selfexception")
# raise_exception()
# 主动捕获异常,当捕获成功,并且处理异常的过程不再抛出异常,程序则会正常执行
def catch_exception():
try:
res = 1/0
except ZeroDivisionError,e: # 必须要捕抓到对应的异常,才会进行处理
try:
raise_exception() # 这里会抛出一个异常,下面的语句不会执行
print "i will not run"
except selfException,e:
print e
finally:
print "i will run alawys"
print "hello"
在设计器中的使用
我们在设计流程规则时,有些操作需要主动抛出异常,并通过 except 来捕获这些异常,这里我们简单讲解一下主动抛出异常的方法
首先,加载必要的 try 组件
在正常流程线中编写流程,当需要你主动抛出异常时,可以通过一个代码块来实现然后,我们就可以在异常流程中,来执行其他操作,比如发邮件等
当然,我们也可以通过 ** traceback** 来捕获这个异常,具体用法如下运行结果如下:
学习