python----异常的传递

"""

异常的传递--try嵌套中

"""

import time



try:

    f = open('test.txt')

    try:

        while True:

            content = f.readline()

            if len(content) == 0:

                break

            time.sleep(2)

            print(content)

    finally:

        f.close()

        print('关闭⽂件')

except:

    print("没有这个⽂件")

"""

没有这个⽂件

"""

"""

函数嵌套调⽤中

"""





def test1():

    print("----test1-1----")

    print(2 / 0)

    print("----test1-2----")





def test2():

    print("----test2-1----")

    test1()

    print("----test2-2----")





def test3():

    try:

        print("----test3-1----")

        test1()

        print("----test3-2----")

    except Exception as result:

        print("捕获到了异常,信息是:%s" % result)

        print("----test3-2----")





test3()

print("------华丽的分割线-----")

test2()

"""

捕获到了异常,信息是:division by zero

----test3-2----

------华丽的分割线-----

  File "C:/File/2-workspace/python/python-base/com/day11/Demo09_except_transfer.py", line 32, in test2

----test2-1----

----test1-1----

    test1()

  File "C:/File/2-workspace/python/python-base/com/day11/Demo09_except_transfer.py", line 28, in test1

    print(2/0)

ZeroDivisionError: division by zero

"""

"""

总结:

如果try嵌套,那么如果⾥⾯的try没有捕获到这个异常,那么外⾯的try会

接收到这个异常,然后进⾏处理,如果外边的try依然没有捕获到,那么

再进⾏传递。。。

如果⼀个异常是在⼀个函数中产⽣的,例如函数A---->函数B---->函数C,

⽽异常是在函数C中产⽣的,那么如果函数C中没有对这个异常进⾏处

理,那么这个异常会传递到函数B中,如果函数B有异常处理那么就会按

照函数B的处理⽅式进⾏执⾏;如果函数B也没有异常处理,那么这个异

常会继续传递,以此类推。。。如果所有的函数都没有处理,那么此时

就会进⾏异常的默认处理,即通常⻅到的那样

注意观察上图中,当调⽤test3函数时,在test1函数内部产⽣了异常,此

异常被传递到test3函数中完成了异常处理,⽽当异常处理完后,并没有

返回到函数test1中进⾏执⾏,⽽是在函数test3中继续执⾏

"""
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值