繁体   English   中英

Python:尝试块失败时仅运行异常块

[英]Python: Only running exception block when try block fails

我很难理解如何编写try除外块,该块仅运行一个块或另一个块而不是仅运行一半块,然后移至异常,如我的示例f 或强调中所示,我不想运行try的任何部分,如果尝试中的任何行都会失败

x = 1
y = 1


try:  
    x = x+1
    print(x)
    x.append(1)
except:
    print(x)

哪个返回

2
2

而不是返回

1

如我所料。 这对我来说是有问题的,因为我愚蠢地认为,只有try失败时才会执行else块。 我正在使用漂亮的汤抓取网站,我分配的汤通常会引发异常,其他块将运行,但在允许添加一些列表然后运行异常块并再次追加之后,出现无法预料的错误。 根据它们在每个块中的位置,给我留下不同长度的列表。

任何帮助深表感谢

您可以在出现错误时在except-block中将compute_result重置为x值:

x = 1
y = 1
computed_value = 0

try:  
    computed_value = x + 1
    #print(fallback_var)
    computed_value.append(1)
    print("Exceution succeed: keeping value")
except:
    print("Exceution failed: resetting value")
    computed_value = x
    #print(x)


print(computed_value)

让我们一步一步走:

您的代码正确执行x=x+1 (现在x为2)。

然后,它将正确执行print(x) (因此将打印2)。

然后它尝试执行x.append(1) (并失败)

由于未成功append(1)因此输入except,然后执行print(x) (因此将打印2)

它输出的正是预期的结果。

这两者都运行。

您的密码

try:  
    x = x+1
    print(x)
    x.append(1)
except:
    print(x)

当python开始执行时,它逐行执行

x = x + 1

之后, x变为2

然后

print (x)

在输出中首先打印2

x.append(1)

以上语句引发异常,该异常在您的代码中被except子句捕获。

请记住,在x = x + 1陈述中, x值已更改为2 except当你做

print (x)

再次打印2

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM