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