try:
#statement 1
#statement 2
except Exception, err:
print err
pass
这可能是很微不足道,但我从来没有真正想过这个问题到现在为止,我发现自己不能够回答以下问题:Python的尝试,除了
是否语句2被如果执行声明1中出现错误?
在语句1和语句2出现错误的情况下,Exception如何处理?在上面的代码中打印出哪个错误?都?
try:
#statement 1
#statement 2
except Exception, err:
print err
pass
这可能是很微不足道,但我从来没有真正想过这个问题到现在为止,我发现自己不能够回答以下问题:Python的尝试,除了
是否语句2被如果执行声明1中出现错误?
在语句1和语句2出现错误的情况下,Exception如何处理?在上面的代码中打印出哪个错误?都?
答案对您的两个问题都是“否”。
只要一个错误是在try/except
块抛出,try
部分立刻退出:
>>> try:
... 1/0
... print 'hi'
... except ZeroDivisionError, e:
... print 'error'
...
error
>>>
正如你看到的,代码不会继续执行print 'hi'
一部分,尽管我做了一个except
为了它。
您可以阅读更多here。
1)是否如果错误在声明中 1提出声明2被执行?
不,语句2不执行
2)如何异常处理的情况下将错误上调 两个语句1和语句2?上面代码中的 打印出哪个错误?都?
唯一的语句1有一定几率产生一个错误,见上面,
注意:如果你想声明2始终执行,你可以使用finally
与尝试/除
在一个异常被提出的控制离开try
区块在异常被引发的时候被提供给合适的except
区块。如果语句1抛出异常,语句2将不会执行。
这也回答了你的第二个问题:你描述的场景不可能发生。
1)如果语句1中出现错误,语句2是否被执行?
号异常将被提出和捕获。 据我了解蟒蛇将向上移动堆栈和呼叫者查找异常处理程序
2)如何异常处理在引发错误两种说法1和2陈述的情况下?在上面的代码中打印出哪个错误?都?
语句2将不会被运行,因此没有例外将提高它
从try
块中的任何异常都将被捕获。这就是为什么对于所有try
/except
子句,将try子句限制为必需的绝对最小代码量。再次,这避免了掩盖错误。
从Python文档:
如果try子句执行过程中发生异常,该条款的其余部分被跳过。然后,如果它的类型匹配以except关键字命名的异常,则会执行except子句,然后在try语句之后继续执行。
因此,一旦发生错误,它会跳到异常
+1引用文档。 – cdhowie
用于您的问题,这可能有助于使“点击”在你的脑海:如果有一个错误在陈述1中,你怎样才能保证陈述2会做正确的事情? – Izkata
@Izkata touche。 – ealeon
你从来没有想过只是自己尝试一下吗? – poke