将异常处理与布尔逻辑混合是否正确?

时间:2015-11-16 19:48:13

标签: python error-handling

我的代码可以引发异常或返回('blas.ldflags=', '-LC:\\openblas -lopenblas') True。我想运行相同的代码

  • 在引发异常时
  • 或当函数返回False

我试图将条件放在True子句中并且它有效:

except

我在文档中没有看到这样的结构 - 这是正确的吗?

2 个答案:

答案 0 :(得分:3)

它在语法上是有效的,就像"无色的绿色想法一样疯狂地睡觉。"语法上是有效的英语,但它完全没有意义,也没有做你想做的事。

IndexError or a

将评估为IndexError,因此except仅触发IndexErrors。在任意布尔条件下都没有except触发器的语法支持。

如果你想在函数返回True或引发异常时做某事,你可以设置"做事情"在两种情况下都标记,然后检查标志:

try:
    do_the_thing = fun(True, True)
except IndexError:
    do_the_thing = True
if do_the_thing:
    do_it()

答案 1 :(得分:1)

如果您不需要区分fun返回true并引发索引错误,则可以自行引发IndexError。

try:
    if fun(True, True):
        raise IndexError
except IndexError:
    print("error")