Python基础刻意训练——DAY8

Python基础刻意训练——DAY8

学习内容
主要内容:异常处理

  • Python常见的异常处理机制:
异常形式 含义
AssertionError 断言语句(assert)失败
AttributeError 尝试访问未知的对象属性
EOFError 用户输入文件末尾标志EOF(Ctrl+d)
FloatingPointError 浮点计算错误
GeneratorExit generator.close()方法被调用的时候
ImportError 导入模块失败的时候
IndexError 索引超出序列的范围
KeyError 字典中查找一个不存在的关键字
KeyboardInterrupt 用户输入中断键(Ctrl+c)
MemoryError 内存溢出(可通过删除对象释放内存)
OSError 操作系统产生的异常(例如打开一个不存在的文件)
OverflowError 数值运算超出最大限制
RuntimeError 一般的运行时错误

参考链接:https://www.cnblogs.com/zhaopanpan/p/8577045.html
https://fishc.com.cn/forum.php?mod=viewthread&tid=45814&extra=page%3D1%26filter%3Dtypeid%26typeid%3D403
相关代码与示例:

f=open("我为什么是一个文件.txt")  ##显示FileNotFoundError(文件找不到)的异常
a=1+'1'   ##显示TypeError(类型异常)的异常
assert 1>2   ##断言异常
  • 捕捉异常:

Python捕捉异常的方式采用try语句:
基本格式:

try:
	语句A
except Exception[as reason]:
	出现异常后执行的代码
finally:
	始终会被执行的语句	

变形方式——

  1. 可以直接只写except,但是这样子会隐藏一定的错误信息
  2. 写多个except语句:程序将会根据遇到的异常顺序,首先报出最先出现异常的异常,剩下的语句不执行,直接跳到结尾;而且,如果存在没有被写进的异常,程序将会自行报错(采用的是程序自己的报错方式)。
  3. 在同一个except语句中,写入多个可能出现的异常,如果满足其中之一,将会执行这段代码。

相关代码与示例:

###多个except语句
try:
	sum=1+'1'
	f=open("我为什么是一个文件.txt")
 	print(f.read())
except OSError as reason:
        print("文件出错啦!!\n原因是:"+str(reason))
except TypeError as reason:
	print("类型出错啦!!\n原因是:"+str(reason))
finally:
	f.close()

###一个except中含有多个异常预期
try:
	sum=1+'1'
 	f=open("我为什么是一个文件.txt")
  	print(f.read())
  	f.close()
except (OSError,TypeError):    ###也可以不用写,采用直接写except的方式
        print("出错啦!!")
finally:
	f.close()
  • 自动引发异常:

采用raise语句,自动引发异常——可以配合异常捕捉,充当异常解释的作用。
相关代码与示例:

raise ZeroDivisionError("除数为零")  ##会得到自发引起的异常的结果,也就是ZeroDivisionError("除数为零")
raise  ###raise 自身也可以直接引发异常

你可能感兴趣的:(python基础刻意训练)