异常
代码运行的过程中,出现的的错误,
会停止程序的执行,
并且提示一些错误信息
抛出异常(raise): 程序停止并且提示错误信息 这个动作,就是抛出异常
异常捕获:针对突发事件做集中的处理, 从而保证程序的稳定性和健壮性
测试:
白盒测试:需要懂源代码, 并且能判断出这些代码可能会出现某些问题
黑盒测试:不需要懂源代码
捕获异常
目的: 为了让程序能够正常运行,
对象:对某些代码的执行 不能确定 是否正确
错误类型: 最后一行错误信息的第一个单词
try: 尝试
尝试执行代码
except ErroeType: 如果不行
特定类型异常,执行语句
except exception as result:
所有异常执行语句
else:
如果没有异常,执行语句
finally:
不管有没有,都执行
异常的传递
异常传递:(逐层上传)
1.当 函数/方法 执行 出现异常,会将异常传递给调用一方
2.如果传递给主程序,仍然没有异常处理,程序才会终止
应用: 在主函数中增加 异常捕捉
主函数调用其它函数,只要出现异常, 都会传递到主函数的异常捕获中
这样就不需要在代码中,增加大量的 异常捕获,能够保证代码的整洁
def demo1():
return int(input("请输入一个整数:"))
def demo2():
return demo1()
try:
print(demo2())
except ValueError:
print("请输入正确的整数")
except Exception as result:
print("未知错误 %s" % result)
抛出异常 :raise
目的: 有些特殊的需求,就是需要在不满我的规则时 主动抛出异常(比如密码不能少于8位,否则主动抛出异常)
Exception 类:
1. 创建一个 Exception 的对象 ex = Exception("主动异常")
2. 使用 raise 关键字 抛出 异常对象 raise ex
def input_password():
pwd = input("请输入密码:")
if len(pwd) >= 8:
return pwd
ex = Exception("密码长度不够")
raise ex
try:
user_pwd = input_password()
print(user_pwd)
except Exception as result:
print("发现错误:%s" % result)
静态和动态模块
静态模块: 可直接查看源码 eg: .py文件
动态模块: 不可查看源码 eg: .dll .pyd
常量
常量:不可修改的变量; 定义后,不要再次赋值 (在python中真正意义上的常量,所有只能用字母全部大写 ,代表常量)
变量名,字母全部大写