Python 异常的传递性及主动抛出学习
异常传递性
在 Python 中,异常可以在函数间传递。当函数内部发生异常时,该异常可以通过函数调用链一直传递到最终的调用处。如果这个异常在最终的调用处仍未处理,则程序将会终止并打印出异常信息。
下面我们通过一个示例来说明异常传递性。
def divide(a, b):
try:
result = a / b
except ZeroDivisionError:
print("除数不能为0")
else:
print(f"{a}/{b}的结果是{result}")
def test():
divide(1, 0)
if __name__ == '__main__':
test()
输出结果:
除数不能为0
在该示例中,函数 test()
中调用函数 divide(a, b)
。当 divide(a, b)
函数中 b
的值为0时,会触发 ZeroDivisionError
异常。该异常会在 try-except
语句块中被捕获并处理。最终,在 divide(a, b)
函数中该异常并未被处理,所以该异常会传递至调用处,即 test()
函数,从而终止了程序。
主动抛出异常
除了异常传递性之外,在编写 Python 代码时,我们也可以主动抛出异常来通知调用方出现了错误。在 Python 中,可以使用 raise
语句来主动抛出异常。
下面我们通过一个示例来说明如何主动抛出异常。
def divide(a, b):
if b == 0:
raise ZeroDivisionError("除数不能为0")
result = a / b
print(f"{a}/{b}的结果是{result}")
def test():
try:
divide(1, 0)
except ZeroDivisionError as e:
print(e)
if __name__ == '__main__':
test()
输出结果:
除数不能为0
在该示例中,函数 divide(a, b)
中判断 b
的值是否为0。如果是0,则会抛出一个 ZeroDivisionError
异常,并将异常信息指定为 除数不能为0
。如果不是0,则计算并输出结果。
在 test()
函数中,我们通过使用 try-except
语句块来捕获 divide(a, b)
函数中主动抛出的 ZeroDivisionError
异常,并输出异常信息。
总结
在 Python 中,异常可以在函数间传递。异常传递性可以帮助我们在程序中调试出现异常时找到异常的来源。除了异常传递性之外,我们还可以通过主动抛出异常来通知调用方出现了错误,从而提高代码的健壮性。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python 异常的传递性及主动抛出学习 - Python技术站