软件测试/测试开发丨Python 错误与异常
2024-01-02 20:44:33
python 错误与异常
语法错误与定位
错误
- 语法错误
- 逻辑错误
- 系统错误
# 错误
# 语法错误
num = 1
if num > 1 # 缺少冒号
print("num>1") # 结构是: SyntaxError: expected ':' line 4第四行
# 逻辑错误
if num >=1:
print("num<=1") # 实现结果与实际场景逻辑不对
elif num>100:
print("num<100") # 实现结果与实际场景逻辑不对
# 系统错误
# 如运行是内存泄露、系统错误等引起的运行失败
异常
- 程序执行过程中出现的未知错误
- 语法和逻辑都是正常的
- 程序业务逻辑不完善引起的程序漏洞–bug
错误与异常的区别
- 异常可以被捕获和处理
- 错误一般是编码错误、逻辑错误、系统错误
常见的异常类型
- 异常类型:docs.python.org/3/library/e…
- 常见的异常类型
** 除零类型、名称异常、索引异常、键异常、值异常、属性异常等
# 除零异常
def div(a,b):
return a/b
print(div(1, 0)) # 异常是:ZeroDivisionError: division by zero
# 名称异常
# num =1
if numb >1:
num =2 # 异常是:NameError: name 'numb' is not defined. Did you mean: 'num'?
# 索引异常
list = [1,2,3]
print(list[4]) # 异常是:ZeroDivisionError: division by zero
# 键异常
dict1 = {"name":"wlll","age":18}
print(dict1['sex']) # 异常是:KeyError: 'sex'
# 值异常
a = input("请输入一个值:")
print(int(a)) # 输入不是数字后,异常是:ValueError: invalid literal for int() with base 10: 'a'
# 属性异常
# 更新一些常量属性时会抛出的异常
异常/错误处理流程
- 如果是拼写、配置等引起的错误,根据出错信息排查出现的位置进行解决
- 如果是程序设计不完善引起的漏洞,根据漏洞的情况进行设计处理漏洞的逻辑
异常捕获、异常处理
def div(a, b):
return a % b
try:
print(div(1, 1)) # 正确显示0
except Exception as e:
print('此处有异常', e) # 没有异常不显示,有异常显示异常
else:
print("哈哈,没有异常") # 没有异常则打印
finally: # 无论是否有异常后还会执行此处
print('finally') # 结果是 finally
使用raise抛出异常
- 使用raise 触发异常并使用exception
def aum(num):
if num <=0 or num >=100:
raise ValueError(f"值错误:{num}")
else:
print(f"设置的年龄为:{num}")
print(aum(-1)) # 主动抛出异常:ValueError: 值错误:-1
print(aum(80)) # 结果是: 设置的年龄为:80
自定义异常
- 自己继承错误类或方法自己写一个异常定义
- class MyError(Exception):
def __init__(self, value):
self.value = value
def __str__(self):
return repr(self.value)
class MyException(Exception):
def __init__(self, value):
self.value = value
print(f'这是一个异常:{value}')
def __str__(self):
return repr(self.value)
def aum(num):
if num <=0 or num >=100:
raise MyException(f"值错误:{num}")
else:
print(f"设置的年龄为:{num}")
aum(-55) # 异常抛出:MyException: '值错误:-55'
最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!?
文章来源:https://blog.csdn.net/qq_48811377/article/details/135342125
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!