Python 如何退出try块并显示异常消息?
此Python代码块在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
学生[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.