巧妙使用自定义异常跳出多级循环

一般最规规矩矩的做法是这样:

break_flag = False
for i in range(10):
    print("first level")
    for j in range(10):
        print("----second level")
        for k in range(10):
            print("--------third level")
            if j == 2 and k == 3:
                break_flag = True
                break  # 跳出最内层循环,继续向下运行
        if break_flag:
            break  # 满足条件,运行break跳出第二层循环,向下运行
    if break_flag:
        break  # 满足条件,运行break跳出第一层循环,结束全部循环,向下运行
print("keep going...")

当然也可以这么搞:

class CustomError(Exception):
    def __init__(self, ErrorInfo):
        self.info = ErrorInfo

    def __str__(self):
        return self.info


try:
    for i in range(10):
        print("first level")
        for j in range(10):
            print("----second level")
            for k in range(10):
                print("--------third level")
                if j == 2 and k == 3:
                    raise CustomError("I am going...")
except CustomError as e:
    pass
print("keep going...")

运行结果都是一样的:

first level
----second level
--------third level
--------third level
--------third level
--------third level
--------third level
--------third level
--------third level
--------third level
--------third level
--------third level
----second level
--------third level
--------third level
--------third level
--------third level
--------third level
--------third level
--------third level
--------third level
--------third level
--------third level
----second level
--------third level
--------third level
--------third level
--------third level
keep going...

猜你喜欢

转载自blog.csdn.net/TomorrowAndTuture/article/details/104844664