在Python中,可以通過try-except語句來捕獲異常,并使用raise語句來手動拋出異常。當編寫代碼時,可以選擇在某些情況下捕獲異常并處理它,而在其他情況下將異常傳播到調用者處。
以下是一個示例代碼,演示了如何正確管理異常傳播鏈:
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")
在這個例子中,func1()函數中拋出了一個ValueError異常,然后在func2()函數中捕獲并重新拋出該異常。最后,在主函數中再次捕獲異常并處理它。通過這種方式,異常會正確地傳播到調用者處,而不會在傳播過程中丟失或被修改。