程序运行时遇到错误就会停止运行,并提示错误信息即为异常
程序停止运行并提示错误信息即为抛出异常
程序开发时,很难将 所有的异常情况 都处理的面面俱到,通过 异常捕获 可以针对突发事件做集中的处理,从而保证程序的 稳定性和健壮性
一、捕获异常
01 异常捕获语法
程序开发中,如果对某段代码的执行结果不确定是否正确 ,可以通过try:
来捕获异常,以下except
语句可实现捕获所有异常
try:
# 尝试执行的代码
except:
# 出现错误后的处理
程序执行时,可能遇到不同类型的异常,并且需要针对不同类型的异常做出不同的响应,此时,需要捕获异常的类型
try:
# 尝试执行的代码
except 错误类型1:
# 对错误类型1执行相应代码
except 错误类型2:
# 对错误类型2执行相应代码
except Exception as va:
# 未知类型错误,并打印其错误类型
print('错误类型为:%s' % va)
捕获未知错误
要通过except 错误类型i:
的语句来实现识别所有错误类型,其代码量会很大,这时可以通过以上最后一行代码来实现
异常捕获完整语法
try:
num = int(input('请输入一个整数:')) # 用户的输入值不一定是整数
a = 10/num # 用户的输入值可能是0
except ValueError: # 识别特定的异常类型,若except后不跟异常类型,则捕获所有异常
print('请输入正确的整数,整数,整数')
except Exception as r: # 将异常类型码直接输出
print('异常是%s' % r)
else:
print('如果没有异常,则执行else,有异常不执行') # 效果同for...else...
finally:
print('不管是否有异常,finally都执行')
print('捕获异常结束')
else:
语句---只有 在没有异常时才会执行的代码
finally:
语句---无论是否有异常,都会执行的代码
如果异常没有被捕获,则该语句与没有写try...except...else..finally...一样,按一般语句执行,该报错的对方照常报错。
02 异常的传递
当函数/方法执行出现异常,那么它的异常会传递给调用它的函数/方法
这样的话,在开发中,可以在主函数中增加异常捕获,只要出现异常都会传递到主函数中的异常捕获中
二、 主动抛出异常
应用程序特有的业务需求主动抛出异常
抛出后要捕获,捕获一般在抛出的上一级
python中提供有一个异常类Exception
,若需要主动抛出异常,可以通过Exception
类创建一个异常对象,并使用关键字raise
抛出异常对象
def demo():
pwd = input('请输入一个字符串:')
if len(pwd) >= 8:
return pwd
ex = Exception('字符串长度太小', '呵呵')
raise ex
try:
print(demo())
except Exception as result:
print('异常内容:%s' % result)