Python中怎么正確管理異常傳播鏈

小億
84
2024-03-12 17:23:42

在Python中,可以通過(guò)try-except語(yǔ)句來(lái)捕獲異常,并使用raise語(yǔ)句來(lái)手動(dòng)拋出異常。當(dāng)編寫(xiě)代碼時(shí),可以選擇在某些情況下捕獲異常并處理它,而在其他情況下將異常傳播到調(diào)用者處。

以下是一個(gè)示例代碼,演示了如何正確管理異常傳播鏈:

def func1():
    try:
        raise ValueError("Error in func1")
    except ValueError as e:
        print("Caught exception in func1")
        raise  # re-raise the exception

def func2():
    try:
        func1()
    except ValueError as e:
        print("Caught exception in func2")
        raise  # re-raise the exception

try:
    func2()
except ValueError as e:
    print("Caught exception in main")

在這個(gè)例子中,func1()函數(shù)中拋出了一個(gè)ValueError異常,然后在func2()函數(shù)中捕獲并重新拋出該異常。最后,在主函數(shù)中再次捕獲異常并處理它。通過(guò)這種方式,異常會(huì)正確地傳播到調(diào)用者處,而不會(huì)在傳播過(guò)程中丟失或被修改。

0