我可以将错误异常和条件组合在一行中吗?

时间:2015-03-07 02:27:28

标签: python error-handling conditional-statements

例如,如果我的代码执行类似的操作:

try:
    for n in graph[x]:
        #...
        #...
        if event == 0:
            #do something
except IndexError:
        #do the same thing

我的if块和我的错误例外块具有相同的确切代码;所以我没有冗余线,而是想要将两个块组合在一起。我想做except IndexError or if target == 0:之类的单一条件。有一种聪明的方法吗?

1 个答案:

答案 0 :(得分:5)

最简单,虽然有点hacky:改变你的

    if event == 0:
        #do something

    if event == 0:
        raise IndexError

以便“搔痒”以下except IndexError条款。

Cleaner是在整个do something语句之前将def转换为内部函数try d;但在某些情况下确实需要更多的工作。