python----异常的概念和使用

代码笔记--------

"""
什么是异常? 在程序运行时,python解释器遇到一个错误停止运行,并且提示一些错误信息,,这就是异常
程序停止执行并且提示错误信息,这就是抛出异常
程序开发时,很难将所有的特殊情况都处理的面面俱到,通过异常捕获可以针对突发事件做集中处理,从而保证代码的稳定性和健壮性

在程序开发中,对执行的某些代码不确定会不会报错,就选择使用try来捕获异常
try 尝试,代码会不会成功运行,会不会报错
except 如果不是,如果报错就执行except内的解决代码

简单的捕获异常的语法;
try:
    可能会报错的代码
except:
    如果报错了就执行的解决代码

"""
print("-------------例1:简单的捕获异常---------------")
num = input("请输入一个整数:")
try: #觉得会报错的代码放入try内
    num=int(num)
except: #如果报错了就执行except内的代码
    print(f"抱歉只能输入整数,不能输入{num}")


"""
一般我们程序有的时候不止一个错误,有时候五六个错误需要集中或针对处理
所以我们需要错误类型的捕获

错误类型捕获的语法:
try :
    可能会报错的代码
except 输入错误类型 :
    针对出现该类型错误,进行处理
except (错误类型1,错误类型2):
    针对出现错误类型1或者错误类型2进行处理     
except Exception as result :
    print("未知错误 %s "% result)     
    
当python解释器抛出异常时,最后一行错误信息的第一个单词就是错误类型,    
     
"""


print("-------------例2:错误类型捕获---------------")
shu = input("请输入一个整数:")
try:
    s=100/int(shu) #可能会报错的代码
    print(f"100 / {shu} = {s}")
except TypeError :
    print(f"抱歉不能输入字符{shu},只能输入整数")
except (ValueError,ZeroDivisionError) :
    print(f"抱歉不能输入{shu},只能输入整数")



"""
有时候我们不可能预判到所有可能出现的错误,还是有一定的难度的
如果希望程序无论出现任何错误,都不会因为python解释器抛出异常而终止,可以再增加一个except来防止未知错误

捕获未知错误语法:
except Exception as result : #针对未知错误进行处理
    print("未知错误 %s "% result)
"""
print("-------------例3:捕获未知错误---------------")
try:
    li3=int(input("请输入整数:"))
except Exception as result : #如果还有未知错误,就执行下列代码
    print("未知错误 %s "% result)


"""
我们一般python中异常捕获的完整语法:
try:
    可能报错的代码
except 输入错误类型 :
    针对出现该类型错误,进行处理
except (错误类型1,错误类型2):
    针对出现错误类型1或者错误类型2进行处理     
except Exception as result :
    print("未知错误 %s "% result)
else :
    没有报错才会执行的代码
finally :
    无论有没有报错都会执行的代码
    

注意:else只有没有报错才会执行;finally无论有没有报错都会执行                 
    
"""
print("-------------例4:异常捕获的完整语法---------------")
try:
    li4=int(input("请输入一个整数:"))
except TypeError:
    print(f"抱歉打字错误,只能输入整数")
except ValueError:
    print(f"抱歉输入的值有误,只能输入整数")
except Exception as wzcw:
    print("未知错误:%s"%wzcw)
else:
    print("没有报错才会执行的代码")
finally:
    print("无论有没有报错都会执行的代码")

"""
异常的传递性
当函数/方法出现报错时,会将异常传递给调用的一方,直到传递给主程序还没有解决异常,才会报错
所以我们一般函数/方法出现异常时,我们通常在主程序中统一来捕获异常
"""
print("-------------例5:异常的传递性---------------")
def A():
    return int(input("请输入整数:"))
def B():
    return A()
"""主程序"""
try: #在主程序中捕获异常
    print(B())
except Exception as wzyc :
    print("未知异常:%s"%wzyc)

运行结果-------

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值