当前位置 博文首页 > m0_51723227的博客:17 异常的传递性

    m0_51723227的博客:17 异常的传递性

    作者:[db:作者] 时间:2021-08-09 10:05

    异常的传递: -----------------------------------------------------01

    • 异常的传递:–当函数/方法执行时候出现异常,会将异常传递给 函数/方法的调用一方
    • 如果 传递到主程序,仍然没有异常处理,程序才会被终止

    | 提示

    • 在开发中,可以在主程序中增加 异常捕获
    • 而在主函数中调用其他函数或者是方法,只要出现异常,都会传递到主函数的异常捕获
    • 这样就不需要在代码中,增加大量的 异常捕获,能够保证代码的整洁

    先看01:

    例子

    def demol1():
    	return int(input())
    
    def demol2():
        return demol1()
    
    print(demol2())
    	
    

    结果:

    发生异常: ValueError
    invalid literal for int() with base 10: '啊'
      File "C:\Users\魑魅魍魉\Desktop\python 程序保存包\练习\练习.py", line 2, in demol1
        return int(input())
      File "C:\Users\魑魅魍魉\Desktop\python 程序保存包\练习\练习.py", line 5, in demol2
        return demol1()
      File "C:\Users\魑魅魍魉\Desktop\python 程序保存包\练习\练习.py", line 7, in <module>
        print(demol2())
    

    仔细看,报错有三个地方:

    1. 一是line 2, in demol1,第二行程序出错,然后把异常 抛给 第五行
    2. 二是line 5, in demol2,第五行程序出错,然后把异常 抛给 第七行,也就是主程序
    3. 最后,主程序并没有对得到的异常进行处理,程序最终结束

    修改:

    def demol1():
    	return int(input())
    
    def demol2():
        return demol1()
    try:
    	print(demol2())
    except Exception as result:
        print("你没有输出整数")
    finally:
        print("再试一下吧")
    

    便不需要再对每一个函数都进行异常捕获了,只需要在主程序中进行异常处理便可以

    新人创作,若有问题,欢迎斧正

    cs
    下一篇:没有了