python - 这是引发异常的正确方法吗? ( python )

标签 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中进行编码的公认方法吗,我会习惯它还是看起来很糟糕?

最佳答案

在最简单的情况下,break是打破循环的最好(也是最简单)的方法:

if x in massive:
    break

但是,如果抛出和捕获异常更适合您的用例,则建议您首先定义自己的用户定义的Exception类:
class MassiveException(Exception):
    pass

接下来,您可以像这样抛出它:
if x in massive:
    raise MassiveException()

因此,可以像这样捕获它:
except MassiveException:
    ... # do something here

这样比较好,因为它可以使您的意图清晰明了,并且摆脱了所有可能的障碍,但是这会吞下您确实不想吞咽的其他异常。

关于python - 这是引发异常的正确方法吗? ( python ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45449635/

相关文章:

Nginx 错误页面 - 一个位置规则来适应它们?

python - 如何在Pandas DataFrame中随机更改某些行的值?

python - 如何使用箭头键使 Python 中的菜单可导航

windows-phone-7 - 参数不正确。在 MS.Internal.XcpImports.MethodEx(IntPtr ptr,字符串名称,CValue[] cvData)

iphone - App Delegate 中的 Mac OSX/iPhone 错误处理?

java - 如果 NoClassDefFoundError 是由 ClassNotFoundException 引起的,为什么 Java 期望您捕获两个可抛出的对象?

python - 选择基于 where 语句的行

python - 如何发送给多个收件人

java - 寻找Java8中的内置函数来忽略异常

java - 异常设计——每一层的自定义异常