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

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

异常处理

在python中我们使用try和except关键字来捕获异常:

  • 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)

异常捕获中,也可以使用else与finally关键字:

  • 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 实战》书籍

相关推荐
冬奇Lab3 小时前
LLM 驱动的自动化测试系列(12):像素 diff 之外,谁真的在让 LLM「看懂」UI 变化
人工智能·测试
ClouGence8 小时前
Katalon Studio、Testim、mabl、CueCast 4 款自动化测试工具怎么选?
测试
stillstream_ink14 小时前
一个缺失的状态校验,让 Mall4j 的订单系统开了 4 个后门
mysql·测试
货拉拉技术15 小时前
货拉拉业务 Agent 评测平台的工程实践与深度思考
测试
冬奇Lab1 天前
LLM 驱动的自动化测试系列(11):API 测试为什么反而是 LLM 最保守的战场
人工智能·测试
狂师2 天前
爆火!新一代e2e AI测试框架,单日狂揽1500 star
前端·人工智能·测试
冬奇Lab2 天前
LLM 驱动的自动化测试系列(10):自愈定位——当启发式打分撞上语义理解的天花板
人工智能·测试
狂师3 天前
2026年APP自动化测试工具大全,12款主流工具一次看懂
前端·开源·测试
冬奇Lab3 天前
LLM 驱动的自动化测试系列(09):移动端自动化(五)——当通用 Agent 框架下沉到测试场景
人工智能·agent·测试
andyweike3 天前
iOS App 测试
ios·测试·ad hoc·分发