Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何退出try块并显示异常消息?_Python_Exception_Exception Handling_Try Catch_Indexoutofboundsexception - Fatal编程技术网

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

Python 如何退出try块并显示异常消息?,python,exception,exception-handling,try-catch,indexoutofboundsexception,Python,Exception,Exception Handling,Try Catch,Indexoutofboundsexception,此Python代码块在学生[3]处生成错误。如何在除之外的中立即显示错误消息,而不是打印以前的值 try: student = ['bob','rob','mob'] print (student ) print (student [0]) print (student [1]) print (student [2]) print (student [3]) except: print("error") 电流输出: ['bob','r

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

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

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

您现在不能这样做

Python不知道它将遇到
IndexOutOfBounds
indexer-ror
)异常,因此它将一直执行,直到遇到异常为止

补救这种情况的一种方法是使用
for
循环,并且只对其进行迭代。它应该完全避免例外情况:

try:
    student = ['bob','rob','mob']
    for stud in student:
        print stud

except:
    print("error") # less likely to be reached :)

你不能这么做

Python不知道它将遇到
IndexOutOfBounds
indexer-ror
)异常,因此它将一直执行,直到遇到异常为止

补救这种情况的一种方法是使用
for
循环,并且只对其进行迭代。它应该完全避免例外情况:

try:
    student = ['bob','rob','mob']
    for stud in student:
        print stud

except:
    print("error") # less likely to be reached :)

代码将一直运行直到出现错误,直到打印(学生[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]
中。

代码将一直运行,直到发生错误,并且直到
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]
中。

请不要添加不相关的内容tags@TimCastelijnskk..使用ide:)您希望显示的实际消息是什么?@thefourtheye,python中的新成员,实际上,我需要在try中出现错误时立即跳转到try,就像在.net中一样。并在catch或except中显示消息section@utility这正是Python所做的。它打印
mob
,因为它可以在遇到
student[2]
时执行。请不要添加不相关的内容tags@TimCastelijnskk..使用ide:)您希望显示的实际消息是什么?@thefourtheye,python中的新成员,实际上,我需要在try中出现错误时立即跳转到try,就像在.net中一样。并在catch或except中显示消息section@utility这正是Python所做的。它打印
mob
,因为它可以在遇到
student[2]
时执行。哦..通常在.net中,我会看到代码直接跳转以捕获块,就像我说的,这是我所知的。但也许再等一会儿,聪明的人就会有一个解决办法:)还有其他办法吗?(据我所知)-没有。如果遇到错误,就没有办法跳过打印。唯一更好的方法是在迭代之前先检查您是否拥有正确的项数。哦..通常在.net中,我会看到代码直接跳转以捕获block正如我所说的,据我所知。但也许再等一会儿,聪明的人就会有一个解决办法:)还有其他办法吗?(据我所知)-没有。如果遇到错误,就没有办法跳过打印。唯一更好的方法是在迭代之前先检查您是否有正确的项数。它的基本概念是代码是逐行运行的。谢谢@Ali,但是如果我的代码中有错误,请纠正我,我会逐行打印知道。。为什么一行一行的作业会使它不同呢?这是一样的。但是在你的代码中你先打印。这是你的第一个任务。这里的意思是,在发生任何打印之前,它将在d=student[3]处抛出异常。您可以直接打印这些值。您的代码成功地打印了三个值,当运行print(student[3])时,它引发了一个异常并打印了错误消息。确实如此。回答得好@AliFatolahzadeh;)+1它的工作原理是代码是逐行运行的。谢谢@Ali,但如果我的代码也有错误,请纠正我,我会逐行打印知道。。为什么一行一行的作业会使它不同呢?这是一样的。但是在你的代码中你先打印。这是你的第一个任务。这里的意思是,在发生任何打印之前,它将在d=student[3]处抛出异常。您可以直接打印这些值。您的代码成功地打印了三个值,当运行print(student[3])时,它引发了一个异常并打印了错误消息。确实如此。回答得好@AliFatolahzadeh;)+1.