首页 > 代码库 > python通过自定义异常,提前退出方法
python通过自定义异常,提前退出方法
python退出的操作,搜索后都是return、exit()等
return:退出一个方法,并返回一个值
exit():退出python
想要实现的功能:
方法A中调用多个方法,方法B、方法C...,方法B有一个开关,是否结束方法A。如果标记结束就直接退出方法A,继续执行其他的方法。
总的过程如下:
print(“执行A之前的方法")
def A():
B(isfinished=“true")
C()
print(“方法A结束了,但是这句还要执行")
问题:
可以这么实现:
print(“执行A之前的方法")
def A():
B()
return
C()
print(“方法A结束了,但是这句还要执行")
或者这么实现:
print(“执行A之前的方法")
def A():
B(isfinished=“true")
if isfinished==“true”:
return
C()
print(“方法A结束了,但是这句还要执行")
但是第一种需要每次都手动改代码,第二种方法要加很多冗余代码(我有很多方法需要用isfinished来做开关),但是我只想通过开关isfinished来判断是否退出A()
解决方法:
通过B()中抛出一个异常,然后提前结束方法A
第一步:自定义一个异常,继承Exception即可
class FinishedException(Exception):
def __init__(self,value):
def __init__(self,value):
self.value=http://www.mamicode.com/value
(如果不用记录参数,就不需要写value等)
第二步:通过raise抛出异常,外层方法catch住这个异常即可
try:
raise FinishedException(“这个方法给出异常")
except FinishedException as e:
print(e)
第三步:通过装饰器统一对异常进行处理,简化代码
def wrapper(func):
def _func(*args):
try:
func(*args)
except FinishedException as e:
print("[",e,"]为最后一个要执行的case,不执行接下来的操作,退出当前流程")
except Exception as e:
print("用例出错:",e)
return _func
try:
func(*args)
except FinishedException as e:
print("[",e,"]为最后一个要执行的case,不执行接下来的操作,退出当前流程")
except Exception as e:
print("用例出错:",e)
return _func
def wrapper_basecase(isfinished=“false")
def _func(*args):
if isfinished == "true":
raise FinishedException(name)
使用装饰器+异常的例子:
@wrapper
def A(driver,iteration=2):
@wrapper_basecase(isfinished="true")
def B():
return xxx
return xxx
B()
python通过自定义异常,提前退出方法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。