代码笔记--------
"""
什么是异常? 在程序运行时,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)
运行结果-------