_异常的本质_调试核心理念,_try_多个except结构.

_异常的本质_调试核心理念

Traceback追溯,追根溯源。most recent call last 最后一次调用。

_try_except基本结构
try:
被监控的可能引发异常的语句块
except BaseException[as e]:
异常处理语句块

测试简单的的0不能做除数异常

try:
    print("step1")
    a = 3 / 0
    print("step2")
except BaseException as e:
    print("step3")
    print(e)

print("step4")

#输出:step1
step3
division by zero
step4

示例:循环输入数字,如果不是数字则处理异常。直到输入88,则结束循环

while True:
    try:
        x = int(input("请输入一个数字"))
        print("输入的数字:",x)
        if x== 88:
            print("退出程序")
            break
    except BaseException as e:
        print(e)
        print("异常,输入的不是一个数字")

print("循环数字输入程序结束!")

_try_多个except结构.

try:
被监控的、可能引发异常的语句块
except Exception1:
处理Exception1的语句块
except Exception2:
处理Exception2的语句块
……
except BaseException
处理可能遗漏的异常的语句块

测试try…多个except结构

try:
    a = input("请输入一个被除数:")
    b = input("请输入一个除数:")
    c = float(a) / float(b)
    print(c)
except ZeroDivisionError:
    print("异常。不能除以0")
except ValueError:
    print("异常。不能将字符串转化为成数字")
except NameError:
    print("异常。变量不存在")
except BaseException as e:
    print(e)

try…except…else结构:
如果try块中没有抛出异常,则执行else块。如果try块中抛出异常,则执行except块,不执行else块。

测试trr…except…else结构

try:
    a = input("请输入被除数:")
    b = input("请输入除数:")
    c = float(a) / float(b)
except BaseException as e:
    print(e)
else:
    print("除的结果是:", c)

try…except…finally
finally 块无论是否发生异常都会被执行

测试try…except…finally

try:
    a = input("请输入一个被除数:")
    b = input("请输入一个除数:")
    c = float(a) / float(b)
except BaseException as e:
    print(e)
else:
    print(c)
finally:
    print("我是finally中的语句,无论发生异常与否,都执行!")
print("程序结束!")

测试finally

try:
    f = open("d:/adddd.txt", "r")
    content = f.readline()
    print(content)
except:
    print("文件未找到")
finally:
    print("run in finally.关闭资源")
    try:
        f.close()
    except BaseException as e:
        print(e)
print("程序执行结束!")

一般不要将return 语句放到try、except、else、finally块中,会发生一些意想不到的错误。建议放到方法最后。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值