5分钟彻底搞定python异常处理

异常处理在工程文件中必不可少,今天就带大家彻底搞定异常处理。

异常处理

python中我们使用tryexcept关键字来捕获异常:

  • try下写:不确定能不能正常执行的代码
  • except下写:如果try下的代码执行失败时要执行的代码

例1

要求用户输入整数:

python 复制代码
try:
    # 不确定能不能正常执行的代码
    num = int(input("请输入一个数字:"))
except:
    #  如果try下的代码执行失败时要执行的代码
    print("请输入一个正确的数字!")
    
输入:`z`
输出:请输入一个正确的数字!

错误类型捕获

在程序执行时,可能会报不同的错误。如果需要针对不同类型的异常做出不同的响应,就需要指定错误类型了:

python 复制代码
try:
    #尝试执行的代码
    pass
except 错误类型1:
    #针对错误类型1,对应的代码处理
    pass
except(错误类型2,错误类型3):
    #针对错误类型2和3对应的代码处理
    pass
except Exception as result:
    # 除了123之外的错误 
    print("未知错误 %s" %result)

例2

提示用户输入一个整数,使用8除以用户输入的整数并且输出:

python 复制代码
while True:
    try:
        # 提示用户输入一个整数
        num = int(input("输入一个整数:"))
        # 输入不是整数就报错,输入0也是报错,这里我们需要捕获异常
        result = 8 / num
        print(result)
    except ZeroDivisionError:
        print("错误,除数不能为0")
    except ValueError:
        print("请输入数字")
    # 捕获未知错误
    except Exception as result:
        print("未知错误 %s" %result)

异常捕获中,也可以使用elsefinally关键字:

  • else:没异常会执行的代码
  • finally:无论是否有异常,都会执行的代码

例3

异常捕获的完整语法:

python 复制代码
try:
    # 提示用户输入一个整数
    num = int(input("输入一个整数:"))
    # 输入不是整数就报错,输入0也是报错,这里我们需要捕获异常
    result = 8 / num
    print(result)
except ValueError:
    print("请输入数字")
except Exception as result:
    print("未知错误%s" % result)
else:
    print("尝试成功!")
finally:
    print("无论是否出现错误都会执行的代码")
    
输入:`z`
输出:请输入数字
输出:无论是否出现错误都会执行的代码

异常的传递

从产生异常的地方开始传递到调用异常的地方,如果一直没有处理异常,就会一直传递到主函数,然后停止程序并报出异常信息。

例4

scss 复制代码
def demo1():
    return int(input("请输入一个整数:"))

def demo2():
    return demo1()

print(demo2())

输入:`z`

报错信息会一直传递到主程序,然后停止:

所以说,只需要在主程序中做一个异常处理就可以完成代码的异常处理。

python 复制代码
def demo1():
    return int(input("输入整数:"))
def demo2():
    return demo1()
    
#利用异常的传递性,在主程序捕获异常
try:
    print(demo2())
except Exception as result:
    print("程序出现了%s错误"%(result))

主动抛出异常raise

python中提供了Exception异常类。在开发时,如果满足特定业务的需求希望抛出异常时,可以创建一个Exception的对象,使用raise关键字抛出异常对象。

例5

提示用户设置密码,如果用户输入长度<8,则抛出异常:

python 复制代码
def input_password():
    #1.提示用户输入密码
    result =input("请输入密码")
    #2.判断密码长度 >=8 ,返回用户输入的密码
    if len(result) >=8:
        return result
    #3.如果<8 主动抛出异常
    print("主动抛出异常!")
    #1>创建异常对象 -可以使用错误信息字符串作为参数
    ex =Exception("密码长度不够!")
    #2> 主动抛出异常
    raise ex
#提示用户输入密码
try:
    print(input_password())
except Exception as result:
    print(result)

以上为Python全部的异常处理内容!但是还需要你在实际场景中多试多练,才能灵活应用!

测试新人可以学习《测试人的 Python 工具书》书籍《性能测试 JMeter 实战》书籍

相关推荐
windliang1 天前
前端 AI 自动化测试:brower-use 调研
前端·agent·测试
往事随风去2 天前
那个让老板闭嘴、让性能翻倍的“黑科技”:基准测试最全指南
后端·测试
霍格沃兹_测试2 天前
测试效率卡点如何破?QA 双角色协作模式帮你提升效率和覆盖率
测试
WeilinerL3 天前
泛前端代码覆盖率探索之路
前端·javascript·测试
大话性能4 天前
MySQL 数据库的备份和恢复(Linux)
测试
大话性能4 天前
【Pycharm 必学技巧 02】智能补全,忽略大小写
测试
Xzh04236 天前
前后端学习的交界
java·ajax·maven·axios·测试
程序员二黑7 天前
Selenium元素定位总失败?这8种定位策略你必须掌握
单元测试·测试·ab测试
程序员二黑8 天前
自动化测试入门:从零开始搭建你的第一个WebUI项目
单元测试·测试·ab测试
从前慢,现在也慢8 天前
(3)Bug篇
学习·bug·测试