首页 > 解决方案 > Python:处理链异常的正确方法

问题描述

我想寻找一种更好的方法来处理以下异常,

def fun(i, j, k, l):
    try:
        do_something_1(i)
    except TimeoutException as f:
        try:
            do_something_2(j)
        except TimeoutExeption as e:
            try:
                do_something_3(k)
            except TimeoutExeption as e:
                try:
                    do_something_4(l)
                except TimeoutExeption as e:
                    raise Exception

基本思想是尝试某事,如果它不起作用,则尝试下一件事,依此类推,直到它得到它想要的或失败。但它必须遵循执行顺序。

我怎样才能让它变得更好?

标签: pythonpython-3.x

解决方案


使用 for 循环:

for fct in [do_something_1, do_something_2, do_something_3]:
    try:
        fct(i)
        break
    except Exception:
        continue
else:
    raise Exception

推荐阅读