异常
程序执行过程中,如果遇到错误,就会抛出异常。
异常捕获,可以帮助程序员捕捉异常,集中性应对突发事件,保证稳定性和健壮性。
语法:
try:
num = int(input("请输入一个整数:"))
except:
print("请输入正确的整数!")
请输入一个整数:a
请输入正确的整数!
针对不同的错误类型输出不同的错误
try:
num = int(input("请输入一个整数:"))
result = 8 / num
except ZeroDivisionError:
print('除零错误')
except ValueError:
print("请输入正确的整数")
捕获未知错误
try:
num = int(input("请输入一个整数:"))
result = 8 / num
print(result)
except ValueError:
print("请输入正确的整数")
except Exception as result:
print("未知错误 %s" % result)
异常捕获完整语法
try:
num = int(input("请输入一个整数:"))
result = 8 / num
print(result)
except ValueError:
print("请输入正确的整数")
except Exception as result:
print("未知错误 %s" % result)
else:
print("尝试成功,没有异常")
finally:
print("无论错误与否都执行")
print("-" * 50)
异常的传递
程序出现异常,传递给 函数的调用方。
传递到主程序,仍然无异常处理,程序终止。
def demo1():
return int(input("请输入整数: "))
def demo2():
return demo1()
print(demo2())
利用异常的传递性 在主程序中 捕获异常。
def demo1():
return int(input("请输入整数: "))
def demo2():
return demo1()
try:
print(demo2())
except Exception as result:
print("未知错误 %s" % result)
案例:(用户输入密码)
def input_password():
pwd = input("请输入密码:\n")
if len(pwd) >= 8:
return pwd
else:
print("主动抛出异常")
# 创建异常对象 exception
ex = Exception("密码长度不够")
raise ex
try:
print(input_password())
except Exception as result:
print(result)