这是引发异常的正确方法吗? (蟒蛇)

时间:2017-08-02 00:34:29

标签: python exception error-handling runtime-error

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中编码的可接受方式,我会习惯它还是它看起来很糟糕?

1 个答案:

答案 0 :(得分:1)

在最简单的情况下,break将是摆脱循环的最佳(也是最简单)方式:

if x in massive:
    break

但是,如果抛出和捕获异常更适合您的用例,我建议首先定义您自己的用户定义的异常类:

class MassiveException(Exception):
    pass

接下来,您可以像这样扔掉它:

if x in massive:
    raise MassiveException()

然后像这样抓住它:

except MassiveException:
    ... # do something here

这样做会更好,因为它会让你的意图变得清晰,并且除了可以吞下你真正不想吞下的其他例外情况之外,还可以摆脱它们。