一.认识异常
常见的异常情况包括:
语法错误(SyntaxError):由于程序编写错误导致无法正确解析的错误。例如,缺少冒号、括号不匹配等。
名称错误(NameError):引用了未定义的变量或函数名。例如,使用未声明的变量。
类型错误(TypeError):对象的类型不符合预期要求。例如,对不支持的数据类型执行操作。
值错误(ValueError):对象的值不符合预期要求。例如,传递给函数的参数超出了有效范围。
索引错误(IndexError):访问序列时使用了无效的索引值。例如,超出了列表的索引范围。
键错误(KeyError):在字典中使用了不存在的键。例如,访问字典中不存在的键。
文件错误(FileNotFoundError):尝试打开或读取不存在的文件。
异常处理错误(Exception Handling Error):在处理异常时出现错误。例如,处理异常的代码块中出现了另一个异常。
二.异常处理
异常处理是一种机制,用于捕获并处理程序运行时可能出现的异常情况,以避免程序崩溃或产生不可预料的结果。在Python中,可以使用try-except语句来实现异常处理。
一般搭配try···except使用 当发生异常就会跳转到except
try:
# 可能会引发异常的代码块
# ...
except ExceptionType1:
# 处理特定类型的异常
# ...
except ExceptionType2:
# 处理另一种类型的异常
# ...
else:
# 当没有异常发生时执行的代码(可选)
# ...
finally:
# 无论是否发生异常都会执行的代码(可选)
# ...
try:
# 尝试打开一个文件
file = open("example.txt", "r")
# 尝试进行文件的读取操作
content = file.read()
# 关闭文件
file.close()
except FileNotFoundError:#文件没找到则会执行
print("文件未找到")
except IOError:
print("读取文件发生错误")
else:#如果没有发生异常,将会执行else代码块。
print(content)
finally:#不论有没有发生异常,都会执行
print("结束异常处理")
raise是Python中用于手动触发异常的关键字,可以手动抛出异常
#自己抛出异常
name = input('请输入一个整数')
try:
value = int(name) # 尝试将输入的字符串转换为整数
except ValueError:
raise NameError('这是名称错误')
else:
if name != str(value):
raise NameError('这是名称错误')
elif name ==str(value):
print('输入成功')
else:
raise ValueError('这是值错误')
这是自定义了两个异常
class MyException1(Exception):
pass
class MyException2(Exception):
pass
# 抛出异常
def function():
# 抛出自定义异常1
raise MyException1("自定义异常1被触发")
def another_function():
# 抛出自定义异常2
raise MyException2("自定义异常2被触发")
# 捕获并处理异常
try:
function()
except MyException1 as e1:
print(e1)
try:
another_function()
except MyException2 as e2:
print(e2)
python中断言异常
在Python中,断言的语法是使用assert关键字后跟一个表达式。
如果该表达式为真,则程序会继续执行;如果该表达式为假,则会引发AssertionError异常,并中断程序的执行
1.强制要求条件满足 断言会用到assert ,注意assert表达式返回True不报错,表达式返回False报错,报AssertionError
def my_list(a, b):
#这是assert的语法格式
assert b != 0, "除数不能为0" # 自定义报错内容,
return a / b
result = my_list(10, 2)
print(result) # 输出:5.0
#如果不满足条件,则会触发断言异常,如:
result = my_list(10, 0)#报错AssertionError: 除数不能为0