写点什么

软件测试 / 测试开发丨 Python 错误与异常 学习笔记

作者:测试人
  • 2023-08-18
    北京
  • 本文字数:1350 字

    阅读完需:约 4 分钟

免费领取:测试资料+测试用例+简历模板+测试文档

本文为霍格沃兹测试开发学社学员学习笔记分享

原文链接:https://ceshiren.com/t/topic/26840

python 错误与异常

语法错误与定位

错误

  • 语法错误

  • 逻辑错误

  • 系统错误

# 错误# 语法错误num = 1if num > 1 # 缺少冒号    print("num>1")  # 结构是: SyntaxError: expected ':'  line 4第四行# 逻辑错误if num >=1:    print("num<=1")  # 实现结果与实际场景逻辑不对elif num>100:    print("num<100")  # 实现结果与实际场景逻辑不对# 系统错误# 如运行是内存泄露、系统错误等引起的运行失败
复制代码

异常

  • 程序执行过程中出现的未知错误

  • 语法和逻辑都是正常的

  • 程序业务逻辑不完善引起的程序漏洞–bug

错误与异常的区别

  • 异常可以被捕获和处理

  • 错误一般是编码错误、逻辑错误、系统错误

常见的异常类型


  • ** 除零类型、名称异常、索引异常、键异常、值异常、属性异常等

# 除零异常def div(a,b):    return a/bprint(div(1, 0)) # 异常是:ZeroDivisionError: division by zero# 名称异常# num =1if 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 % btry:    print(div(1, 1))  # 正确显示0except 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: 值错误:-1print(aum(80)) # 结果是: 设置的年龄为:80
复制代码

自定义异常

  • 自己继承错误类或方法自己写一个异常定义

  • class MyError(Exception):

  • python 复制代码 def __init__(self, value):

  • python 复制代码 self.value = value

  • python 复制代码 def __str__(self):

  • python 复制代码 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'
复制代码


用户头像

测试人

关注

专注于软件测试开发 2022-08-29 加入

霍格沃兹测试开发学社,测试人社区:https://ceshiren.com/t/topic/22284

评论

发布
暂无评论
软件测试/测试开发丨Python 错误与异常 学习笔记_Python_测试人_InfoQ写作社区