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

相关推荐
前端工作日常15 小时前
平台价值与用户规模的共生关系
electron·测试·puppeteer
CrissChan3 天前
AI赋能软件工程让测试左移更加可实施
人工智能·python·llm·软件工程·测试
努力奋斗的Tom4 天前
Air test框架与appium的优势
测试
瑞士龙珠5 天前
JMeter 多台压力机分布式测试(Windows)
测试
Apifox5 天前
如何在 Apifox 中正确使用前置 URL?
前端·后端·测试
陈哥聊测试6 天前
软件工程3.0时代,为什么人工测试仍必不可少?
人工智能·测试
檀檀19937 天前
测试抓包工具2-whistle抓包
测试
用户3521802454758 天前
靶场:Breach3.0攻略
安全·测试
ZoeLandia9 天前
前端自动化测试:Jest、Puppeteer
前端·自动化测试·测试
霍格沃兹测试开发9 天前
Playwright系列课(2) | 元素定位四大法宝:CSS/文本/XPath/语义化定位实战指南
开源·测试