python中, 异常具有传递性, 是指,
当异常发生后, 若当前代码没有异常捕获机制, 那么会把异常传递给调用此代码的方法, 并层层向上传递, 若最终也没有捕获机制, 会交给python解释器, 解释器的处理是终止程序
异常传递性实例
def demo1():
num = int(input("请输入数字")) #2
def demo2():
demo1() #5
demo2(); #7
控制台输入以及输出结果如下:
请输入数字a
Traceback (most recent call last):
File "C:/Users/Administrator/IdeaProjects/bdPan/MyTest.py", line 7, in <module>
demo2();
File "C:/Users/Administrator/IdeaProjects/bdPan/MyTest.py", line 5, in demo2
demo1()
File "C:/Users/Administrator/IdeaProjects/bdPan/MyTest.py", line 2, in demo1
num = int(input("请输入数字"))
ValueError: invalid literal for int() with base 10: 'a'
ps: python异常信息输出是栈结构, 触发顺序其实是2,5,7
异常传递的捕获实例
根据异常的传递性, 我们可以在异常代码块的调用方法中捕获, 比如在主函数中捕获
def demo1():
num = int(input("请输入数字"))
def demo2():
demo1()
try:
demo2()
except Exception as ex:
print(str(ex))