簡體   English   中英

通過這種簡單的異常處理,我應該在哪里打印輸出?(Python)

[英]Where should I print my output at this simple exception handling?(Python)

大家好,在“ try”子句中打印我的輸出還是在“ except”子句后使用“ else:”將其輸出? 這是代碼:

try:
    Value1 = int(input("Type the first number: "))
    Value2 = int(input("Type the second number: "))
    Output = Value1 / Value2
except ZeroDivisionError:
    print("Attempted to divide by zero!")
else:
    print(Output)

或這個?

try:
    Value1 = int(input("Type the first number: "))
    Value2 = int(input("Type the second number: "))
    Output = Value1 / Value2
    print(Output)
except ZeroDivisionError:
    print("Attempted to divide by zero!")

我的意思是哪個更好? 因為結果是一樣的。 謝謝。

else子句僅在不引發任何異常時運行。

因此,您要將其放在其中的原因是要使其明確: 您只想在沒有異常的情況下打印輸出

正如您所提到的,在您的代碼中,所發生的事情沒有功能上的差異。

有關更多信息,請參閱文檔

第一個可以按照您的期望正常工作(假設您不想顯示python錯誤提示並暫停程序)。 它只是簡單地規定IF第二位數為零,那么它將不打印Python錯誤提示並將其傳遞給print命令(這就是應該的方式)。 否則,在任何其他情況下,無論除數是多少,它都將始終提供輸出,從而消除幾乎所有漏洞。

建議:保持輸入類型為float而不是int,這樣您就可以打印除以小數的輸入。 前三分之二

就像您已經知道的那樣,當我們使用try...except時,我們正在談論錯誤處理。
當某個操作(或其他語句)生成錯誤時,Python將停止try塊執行,並向下傳遞到與引發的異常匹配的第一個除外塊 如果沒有匹配我們異常的except子句,則在外部try語句中傳遞它。 直到處理完畢或未找到任何處理程序為止,引發的異常將成為未處理的異常,並且執行過程將停止並顯示錯誤回溯的消息。

除了except塊之外,我們還可以使用finally塊 ,無論是否發生異常,都將執行finally塊 ,else塊。 對於try子句未引發異常的必須執行的代碼,最后一個有用。

你的例子

您怎么說這兩段代碼的結果相同。 但是,在Python的文檔頁面上閱讀后,我們得到了以下確認:

使用else子句比向try子句添加其他代碼更好,因為它避免了意外捕獲try ... except語句所保護的代碼未引發的異常。

簡單來說,如果您有引發同一錯誤的不同語句,但是對於其中一個語句,您不希望捕獲它,請將其移至else子句。 在堆棧上查看此問題以更好地理解。

因此,在您的情況下,您可以將print語句放到try塊中,因為您不會從中捕獲某些特定的異常,並且在這種情況下,您放置print語句並沒有太大區別。 但是,我認為第二個示例是一個很好的邏輯分離,類型為“如果發現錯誤,則執行打印”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM