Python捕获异常但打印它们

时间:2017-07-21 14:23:42

标签: python loops exception heap index-error

我已经构建了一个最大堆,并且只要有元素就尝试提取max。如果我没有返回IndexError。这是我试图执行的代码:

while True:
    try:
        print hp.extract_max()
    except:
        break

并在extract_max()方法中:

def extract_max(self):
    if self.size == 0:
        return IndexError
    item = self.items[0]
    self.items[0] = self.items[self.size - 1]
    self.heapify_down()
    del self.items[len(self.items) - 1]
    return item

但是,代码在遇到IndexError时没有破坏,而是打印它。 while 循环没有中断。

<type 'exceptions.IndexError'>
<type 'exceptions.IndexError'>
....

它不断打印异常,而不会打破循环。

问题是什么?

2 个答案:

答案 0 :(得分:5)

正如其他答案所述,您应该<details> raise而不是exception所以:

return

我只想补充一点,您使用if self.size == 0: raise IndexError 捕获所有类型的异常,您可能希望将其更改为捕获except,以避免捕获其他异常(例如:IndexError )如下:

KeyboardInterrupt

答案 1 :(得分:2)

您应该提出异常,而不是返回异常。做raise IndexError