这是我的简化代码:
x = 0
while True:
x += 1
if not do_stuff(x)
break
if x > 1000000:
raise Exception("Too many iterations")
1000000是永远不应达到的x
值。如果是的话,出现问题并引发异常。对于这样的用例,Exception
的适当子类是什么,如果存在的话呢?
答案 0 :(得分:0)
这种情况不会发生的唯一方法是do_stuff永远不会返回false。
如果是这种情况,请创建自定义异常。 我通常创建一个MiscException(以及更具体的例外)
答案 1 :(得分:0)
如果您不想要,则根本不需要使用例外:
for i in xrange(1000000):
if not do_stuff(x):
break
else:
# too many iterations, do something else.
for / else构造有点奇特,但适合这个用例。如果循环永远不会被破坏,则执行else子句。这里解释得更多:http://nedbatchelder.com/blog/201110/forelse.html
如果您想使用例外进行快速诊断,请不要过度使用该类。例外情况很好。如果您担心某些事情可能会捕获您的异常,那么请使用容易引发的ZeroDivisionError:
if x > 1000000:
1/0
答案 2 :(得分:-1)
我有同样的问题。我无法为此找到内置于python的任何内容。 IPython使用RuntimeError('maximum recursion depth exceeded')
。