try:
#statement 1
#statement 2
except Exception, err:
print err
pass
这可能是非常微不足道的,但直到现在我才真正想过它,我发现自己无法回答以下问题:
如果在语句1中引发错误,是否会执行语句2?
在语句1和语句2都引发错误的情况下,Exception如何处理?在上面的代码中打印出哪个错误?两个
答案 0 :(得分:9)
对于你的两个问题,答案都是“不”。
只要try/except
块中出现错误,try
部分就会立即退出:
>>> try:
... 1/0
... print 'hi'
... except ZeroDivisionError, e:
... print 'error'
...
error
>>>
正如您所看到的,代码永远不会进入print 'hi'
部分,即使我为它做了except
。
您可以阅读更多here。
答案 1 :(得分:8)
来自Python文档:
如果在执行try子句期间发生异常,则跳过该子句的其余部分。然后,如果其类型匹配except关键字后面的异常,则执行except子句,然后在try语句之后继续执行。
因此,一旦发生错误,它就会跳到异常
答案 2 :(得分:4)
在引发异常时,控制会在引发异常的位置离开try
块,并将其提供给相应的except
块。如果语句1抛出异常,则语句2将不会执行。
这也回答了你的第二个问题:你描述的情景不可能发生。
答案 3 :(得分:4)
1)如果在语句1中引发错误,是否会执行语句2?
没有。将提出并捕获例外情况。 据我所知,python将向上移动堆栈并在调用者
中查找异常处理程序2)在语句1和语句2都引发错误的情况下,Exception如何处理?在上面的代码中打印出哪个错误?既?
语句2将不会运行,因此不会引发任何异常
try
块中的任何异常都将被捕获。这就是为什么对于所有try
/ except
子句,将try子句限制为必要的绝对最小代码量。同样,这可以避免掩盖错误。
答案 4 :(得分:2)
1)如果在语句中引发错误,是否会执行语句2 1?
nope,声明2未执行
2)在引发错误的情况下,Exception如何处理 声明1和声明2?它打印出来的错误 上面的代码?既?
只有声明1有机会引发错误,见上文
注意:如果您希望语句2始终执行,则可以将finally
与try / except