python運(yùn)行函數(shù)時(shí)如何處理異常

小樊
84
2024-08-27 11:10:11

在Python中,可以使用try-except語(yǔ)句來(lái)處理異常。當(dāng)你預(yù)計(jì)某個(gè)代碼塊可能會(huì)引發(fā)異常時(shí),可以將其放在try塊中。如果try塊中的代碼引發(fā)了異常,程序?qū)⒘⒓刺D(zhuǎn)到相應(yīng)的except塊。

以下是一個(gè)簡(jiǎn)單的示例:

def divide(a, b):
    try:
        result = a / b
    except ZeroDivisionError:
        print("除數(shù)不能為0")
        return None
    except Exception as e:
        print(f"發(fā)生了未知錯(cuò)誤: {e}")
        return None
    else:
        return result
    finally:
        print("計(jì)算完成")

num1 = 10
num2 = 0

result = divide(num1, num2)
if result is not None:
    print(f"{num1} / {num2} = {result}")

在這個(gè)示例中,我們定義了一個(gè)名為divide的函數(shù),它接受兩個(gè)參數(shù)ab,并嘗試計(jì)算它們的商。我們將除法操作放在try塊中,然后捕獲兩種類型的異常:ZeroDivisionError(當(dāng)除數(shù)為0時(shí)引發(fā))和Exception(捕獲所有其他異常)。

如果發(fā)生異常,我們會(huì)在except塊中打印一條錯(cuò)誤消息,并返回None。如果沒(méi)有發(fā)生異常,else子句將返回計(jì)算結(jié)果。無(wú)論是否發(fā)生異常,finally子句都會(huì)在最后執(zhí)行,用于執(zhí)行清理操作或釋放資源。

注意:在實(shí)際編程中,通常建議盡量避免捕獲所有異常(except Exception),因?yàn)檫@可能會(huì)隱藏潛在的問(wèn)題。最好是僅捕獲你預(yù)期可能發(fā)生的特定異常。

0