[英]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.