python如何处理异常情况?

python如何处理异常情况?,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

我学习了如何使用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 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行之后才会执行。