1、raise语句
作用
触发一个错误,让程序进入异常状态
语法
raise 异常类型
或
raise 异常对象
def make_exception(n):
#假设n必须是0-100的整数
print(“begin…”)
#触发ValueError类型的异常并进入异常状态
#raise 异常类型if n > 100:
raise ValueError
#raise 异常对象
if n < 0:
raise ValueError(“这是我自己定义的一个错误”)print(“end”)
value = int(input(“请输入一个整数:”))
try:
make_exception(value)
print(“make_exception调用结束”)
except ValueError as e:
print(“try里出现了值错误通知,已捕获!!!”)
print("接收的异常通知是: ", e)
2、assert函数
语法
assert 真值表达式,错误数据(通常是字符串)
作用
当真值表达式为False时,用错误数据创建一个 AssertionError 类型的错误,并进入异常状态
等同于:
if 真值表达式 == False:
raise AssertionError(错误数据)
def get_score():
s = int(input("请输入学生成绩: "))
#用assert语句来断言s是否在 0~100之间
assert 0 <= s <= 100, “用户输入的整数不在>>0~100之间”
return s
try:
score = get_score()
print(“学生成绩为:”, score)
except ValueError:
print(“用户输入的成绩无法转化为整数”)
except AssertionError as err:
print(“发生了断言错误,原因是:”, err)
3.with语句(高级)
语法
with 表达式1 [as 变量1],表达式2 [as 变量2], …:
语句块
作用
使用于对资源进行访问的场合,确保使用过程中不管是否发生异常,都会执行必须的'清理'操作,并释放资源
如: 文件使用后自动关闭,线程中锁的自动获取和释放等
说明
a、执行表达式 用as 子句中的变量绑定生成的对象
b、with 语句并不会改变异常的状态,通常在最外层加try-except语句
src_file = input("请输入源文件: ")
dst_file = input("请输入目标文件: ")try:
with open(src_file, ‘rb’) as src:
#准备打开别一个文件
with open(dst_file, ‘wb’) as dst:
#开始读写文件
b = src.read()
dst.write(b)except OSError:
print(“复制失败”)