'''尚学堂学习笔记,用于复习'''
一个简单的实例:
异常机制的本质:
Python中,引进了很多用来描述和处理异常的类,称为异常类,异常类定义中包含了该类异常的信息和对异常进行处理的方法,下面较完整地展示了python中内建异常类的继承层次:
python中一切都是对象,异常也采用对象的方式来处理。处理过程:
1.抛出异常:在执行一个方法时,如果发生异常,则这个方法生成代表异常的一个对象,停止当前的执行路径,并把异常对象提交给解释器。
2.捕获异常:解释器得到该异常后,寻找相应的代码来处理该异常
对异常分别处理的实例
处理异常中的else语句
else语句的实例:
处理异常的finally语句
finally语句的实例
实例2(对文件进行操作)
常见异常汇总
with语句:
with上下文管理可以自动管理资源,在with代码块执行完毕后自动还原进入该代码之前的现场或者上下文,不论何种原因跳出with块,不论是否有异常,总能保证资源正常释放,极大简化了工作,在文件操作和网络通信相关的场合非常常用
例子:
trackback模块
import traceback
try:
print("step1")
num = 1 / 0
except:
traceback.print_exc() #打印完整的错误信息
#traceback的作用是让我们在出现错误的地方捕获并抛出异常的同时顺利执行下面的程序
也可以将抛出的异常写入文件
except:
with open("E:/Users/filename", "a") as f:
traceback.print_exc(file=f)
自定义异常类:程序开发时,有时候我们需要自己定义异常类,自定义异常类一般都是运行时异常,通常继承Exception或其子类即可,命名一般以Error,Exception为后缀,自定义异常由raise主动抛出。
class AgeError(Exception): #继承Exception
def __init__(self, errorInfo)
Exception.__init__(self)
self.errorInfo = errorInfo
def __str__(self)
return str(self.errorInfo) + ", 年龄错误,应该在1-150之间"
if __name__ == "__main__": #如果为True,则模块是作为独立文件运行,进行测试
age = int(input("请输入一个年龄:"))
if age < 1 or age > 150:
raise AgeError(age)
else:
print("正常的年龄:", age)