1.异常机制
1_1 try和except:
异常:程序无法继续执行了,例如:字符串和数字相加,除以0,对None进行操作
中断当前程序执行,然后打印出红字
Exception
error
捕捉异常的方式:关键字
try:代码块(逻辑)
except 异常类型(Exception):代码块(出异常之后,会执行这里)
例子如下
str1 = input("请输入8个长度以外的字符串:")try:print(f"获取输入字符串的第八个值:{str1[7]}") # unexpected EOF while parsingexcept Exception as e: # 获取异常的信息,然后赋值给变量 eprint(f"报错的异常为: {e},请检查!!!")
1_2 try和finally
1. try...except 捕获异常,出异常了执行except代码块的内容
2. try...finally
try:代码块
finally:无论异常是否发生,finally代码块内容一定会执行
例子如下
# try:
# print("try下面的代码块执行!")
# print("报错前的代码")
# n = 1 / 0 # 一定会报错
# print("报错后的代码")
# except:
# print("except下面的代码块执行!")
# n = 1 / 0
#
# finally:
# print("finally下面的代码块执行!")# 问题:try执行代码的时候,遇到了报错的代码,那么之前的代码是否会执行?会
# 但是,报错后的同级代码,不会运行
# 注意:
# 1. 无论try和except会不会报错,finally都会执行
# 2. 只有try报错了,才会运行except
# 3. 如果try报错,并且except里面也报错了,会同时打印报错信息
示例如下
try:print("最外层 -- try代码块")try:print("里面 -- try代码块")n = 1 / 0except:print("里面 -- except代码块")n = 1/0except:print("最外层 -- except代码块")try:print("里面 -- try代码块")n = 1 / 0except:print("里面 -- except代码块")# 问题:如果正常执行,会打印哪几行的代码?
# 如果存在多个try、except的嵌套 -- 遵循try和except的运行逻辑,try不报错,就不会运行except# 问题:在最外层的try里面,加了报错代码,会打印哪几行?
# 一旦遇到报错的代码,就不会执行同级代码# 问题:在里面层的try里面,加了报错代码,会打印哪几行?
# 里面这层try、except已经做了正常的异常处理之后,就表示try已经全部运行成功
1_3 assert异常:
断言:预期结果 == 实际结果
断言:用关键字 assert + 表达式(表达式返回一个bool值)
我希望是一个什么结果 -- 元素定位,assert 标签是否存在 True False
如果表达式是False,就会出异常,后面可以加提示
示例:
username = input("请输入登录的账号:")
password = input("请输入登录的密码:")# if username == "admin" and password == "123":
# print("欢迎成功登录qsdd用户系统!")assert username == "admin" and password == "123", f"Use case does not pass, please check data! username:{username}, passowrd:{password}"
print("欢迎成功登录qsdd用户系统!")
# 为什么用例需要用断言来做处理?
# 一条自动化用例,如果代码全部运行通过,没有报错,视为用例通过
# 反之,如果一旦报错,就视为用例失败
1_4 with和as:
with 代码 as 变量
with执行语句如果不出错就会把自己的值赋值给as后面的变量
用于文件读取,with块结束后,自动关闭文件
# 第一种方式:
# file = open(r"/Volumes/attached/hcedu/vipCourse/pythonBasic/python_code/python_0307_234/day09/01 异常机制/demo.txt",
# mode="r",
# encoding="utf-8")
#
# msg = file.read()
# print(f"获取到的信息为: {msg}")
#
# file.close() # 主动关闭文件# 第二种方式:
# with open(r"/Volumes/attached/hcedu/vipCourse/pythonBasic/python_code/python_0307_234/day09/01 异常机制/demo.txt", mode="r",
# encoding="utf-8") as f:
# pass# msg = f.read()# print(f"获取到的信息为: {msg}")# msg1 = f.read() # I/O operation on closed file.
# print(f"获取到的信息为: {msg1}")