python如何处理异常情况?
我学习了如何使用except函数来防止代码崩溃,但我想更好地理解python如何执行它 例如,我有添加一对数字的代码,如果变量nums有两个以上的数字,它应该给出AssertionErrorpython如何处理异常情况?,python,exception-handling,Python,Exception Handling,我学习了如何使用except函数来防止代码崩溃,但我想更好地理解python如何执行它 例如,我有添加一对数字的代码,如果变量nums有两个以上的数字,它应该给出AssertionError 1 def sum_pair(pair): 2 assert len(pair) == 2 3 return pair[0] + pair[1] 4 try: 5 total = sum_pair(nums) 6 print 'The t
1 def sum_pair(pair):
2 assert len(pair) == 2
3 return pair[0] + pair[1]
4 try:
5 total = sum_pair(nums)
6 print 'The total is', total
7 except AssertionError:
8 print 'Abort'
因此,在我看来,python只执行第1、2、4、5、7和8行。
这是正确的理解方式吗
谢谢从技术上讲,它按顺序执行第4,5,1,2,7,8行。从技术上讲,它按顺序执行第4,5,1,2,7,8行。当发出异常信号时,调用堆栈将搜索具有与异常类型匹配的
except
子句的try
块。堆栈展开到该点,执行except
子句中的代码,然后在try
块之后继续执行
因此,当第2行检测到断言失败时,它立即退出
sum\u pair()
函数,并从第8行开始执行代码。当发出异常信号时,调用堆栈将搜索具有与异常类型相匹配的except
子句的try
块。堆栈展开到该点,执行except
子句中的代码,然后在try
块之后继续执行
因此,当第2行检测到断言失败时,它会立即退出
sum\u pair()
函数,并从第8行开始执行代码。我确信OP意识到了这一点,并且只是对执行的行号进行排序。此外,这个答案更适合作为评论。@TigerhawkT3,很公平。当我读到这个问题时,我把它解释为OP,想知道执行顺序是否是理解它的正确方式,但你的观点是正确的。IMHO,首先执行def
行,以便解释程序知道标识符sum\u pair
。所以执行的顺序是1,4,5,2,7,8我很确定OP意识到了这一点,并且只是对执行的行号进行排序。此外,这个答案更适合作为评论。@TigerhawkT3,很公平。当我读到这个问题时,我把它解释为OP,想知道执行顺序是否是理解它的正确方式,但你的观点是正确的。IMHO,首先执行def
行,以便解释程序知道标识符sum\u pair
。因此,执行顺序是1,4,5,2,7,8函数中的语句直到调用函数时才会执行。因此,第2行在第5行之后才会执行。函数中的语句在调用函数之前不会执行。所以第2行直到第5行之后才会执行。