什么是异常?
程序运行的过程中出现了错误。
捕获异常?
提前在某处会发生异常的地方做好提前准备,当出现异常时有处理方法。
一、基本语法
try:可能发生错误的代码
except:如果出现异常要执行的代码
例:
try:
f = open("d:1.txt","r",encoding="UTF-8")
except:
print("出现异常")
f = open("d:1.txt","w",encoding="UTF-8")
二、捕获指定的异常
常见异常类型
AssertionError 断言语句失败(assert 后的条件为假)
AttributeError 访问的对象属性不存在
ImportError 无法导入模块或者对象,主要是路径有误或名称错误
IndentationError 代码没有正确对齐,主要是缩进错误
IndexError 下标索引超出序列范围
IOError 输入/输出异常,主要是无法打开文件
KeyError 访问字典里不存在的键
NameError 访问一个未声明的变量
OverflowError 数值运算超出最大限制
SyntaxError python语法错误
TabError Tab和空格混用
TypeError 不同类型数据之间的无效操作(传入对象类型与要求的不符合)
ValueError 传入无效的值,即使值的类型是正确的
ZeroDivisionError 除法运算中除数0 或者 取模运算中模数为0
例:
try:
print(name)
except NameError as e:
print("出现变量未定义异常")
print(e)
结果:
出现变量未定义异常
name 'name' is not defined
三、捕获多个异常
使用元组方式。
例:
try:
1/0
# print(name)
except (NameError,ZeroDivisionError) as e:
print("出现变量未定义或除以0的异常")
print(e)
结果:
出现变量未定义或除以0的异常
division by zero
四、捕获所有异常
例:
try:
print(name)
except Exception as e:
print("出现异常")
print(e)
五、异常else
else表示如果没有异常要执行的代码。
例:
try:
print(1)
except Exception as e:
print(e)
else:
print("没有异常")
六、异常finally
finally表示无论是否异常都要执行的代码,如关闭文件。
例:
try:
f = open("d:1.txt","r")
except Exception as e:
f = open("d:1.txt","w")
else:
print("没有异常")
finally:
f.close()
七、异常的传递性
当所有函数都没有捕获异常的时候,程序会报错。
例:
def fun1():
num = 1/0
def fun2():
fun1()
def main():
try:
fun2()
except Exception as e:
print(f"出现异常,信息:{e}")
main()