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):
            self.value=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
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
    B()
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM