簡體   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