当前位置: Python基础教程 > 09-异常处理 > 阅读正文

python异常的传递性

2021.6.22.   514 次   700字

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))

本篇完,还有疑问?

加入QQ交流群:11500065636 IT 技术交流群