如何退出try块并显示异常消息?

时间:2016-01-30 11:38:01

标签: python exception exception-handling try-catch indexoutofboundsexception

此Python代码块在student [3]处生成错误。如何立即在except中显示错误消息而不是打印以前的值?

try:

    student = ['bob','rob','mob']
    print (student )
    print (student [0])
    print (student [1])
    print (student [2])
    print (student [3])

except:
    print("error")

当前输出:

['bob','rob','mob']
bob
rob
mob
error

Process finished with exit code 0

如何在出现错误之前避免打印?

2 个答案:

答案 0 :(得分:4)

代码将一直运行,直到发生一些错误,并且错误不会发生在print (student [3])之前。因此,以前的命令将会运行,现在又回来了。 一个简单的解决方案是首先将这些值分配给某些变量然后打印出来:

try:

    student = ['bob','rob','mob']
    a=student [0]
    b=student [1]
    c=student [2]
    d=student [3]
    print (a)
    print (b)
    print (c)
    print (d)

except:
    print("error")

因此,在执行打印命令之前,d=student [3]中会发生错误。

答案 1 :(得分:2)

你不能那样做AFAIK。

Python不会知道它会遇到gcc main.c -o main -WallIndexOutOfBounds)异常,所以它会一直执行直到异常。

解决这种情况的一种方法是使用IndexError循环并仅对其进行迭代。它应该完全避免例外:

for