【发布时间】:2017-08-02 00:34:29
【问题描述】:
for i in range(1,1000):
try:
x = some_crazy_function(my_parm(i))
if x in massive:
raise Exception()
massive.append(x)
x = dict(qnother_crazy_functionsl(x.replace('X','Y')))
x = new_func(x['constant'])[0]
next.append(x)
except:
break
我对 python 还很陌生,我在维护别人的代码的同时跑过这个片段
对我来说,这看起来像是一种可怕的退出循环的方式。 这是在 python 中编码的公认方式,我会习惯它还是像看起来一样糟糕?
【问题讨论】:
-
当您的代码遇到异常时会引发异常。
x在massive中并没有什么异常 - 当然,除非您通常期望xnot 在massive中。在性能方面,异常非常昂贵。所以,请改用break。 -
使用裸
except:也是个坏主意,因为它还会捕获KeyboardInterrupt和其他一些您可能不想捕获的东西。
标签: python exception error-handling runtime-error