在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()函数中捕获并重新抛出该异常。最后,在主函数中再次捕获异常并处理它。通过这种方式,异常会正确地传播到调用者处,而不会在传播过程中丢失或被修改。