今天没有思维导图,直接开始吧~
异常就是运行期检测到的错误,异常处理就是对出现的异常进行检验和处理。在此之前,先了解下基类和派生类。
一、基类和派生类
基类,也是父类,是相对于派生类(子类)而言的。子类可以继承父类的所有属性和方法,而同时,子类也可有自己的独特的属性或方法。举个例子:
class breakfast:
def eat(self):
print('You can eat everything you want to eat!')
class lunch(self):
def eat(self):
print('You can eat everything you want to eat!')
class supper(self):
def eat(self):
print('You can eat everything you want to eat!')
breakfast.eat() # You can eat everything you want to eat!
lunch.eat() # You can eat everything you want to eat!
supper.eat() # You can eat everything you want to eat!
上面的几个函数的代码块都是重复的,这种情况下,我们要多打好多代码,重复工作太多,但如果用继承的方法就可以变成下面这样子:
class breakfast:
def eat(self):
print('You can eat everything you want to eat!')
class lunch(breakfast):
pass
class supper(breakfast):
def no_desire():
print('Are you dieting?')
breakfast.eat() # You can eat everything you want to eat!
lunch.eat() # You can eat everything you want to eat!
supper.eat() # You can eat everything you want to eat!
supper.no_desire() # Are you dieting?
这样一来,代码就变得清爽很多。其中,类 breakfast 相比下面的两个来说就是父类,lunch、supper就是子类。两个子类继承了父类的所有方法,并且类 supper 相比于 类 breakfast还多了一个方法。
二、异常
在异常中也有子类与父类的关系,Python所有的错误都是从BaseException类派生的,但是子类无法截取父类的错误类型。
下面链接里是所有异常类型及他们的继承关系:
通过BaseException看Python常见的错误类型和继承关系
三、异常处理
3.1 try 语句
try 语句是用于检测某些代码是否存在异常,当代码存在错误时,终端会报错,并显示错误类型。
3.2 try-except 语句
# 形式
try:
检测范围
except Exception[as reason]:
出现异常后的处理代码
1.程序会先执行try 后的语句。若无异常,那执行完就完了。但是如果有异常,且正好是except 所定义的异常,那么会执行except 后的代码。而若是except 以外的异常,程序会报错。
2.except 语句可以不止一个。except 后可不带任何 exception,也可以带多种异常类型
3.3 try-except-else 语句
# 形式
try:
检测范围
except Exception[as reason]:
出现异常后的处理代码
else:
若不出现错误,这部分的代码将被运行
3.4 try-finally 语句
# 形式
try:
检测范围
except Exception[as reason]:
出现异常后的处理代码
else:
若不出现错误,这部分的代码将被运行
finally:
无论如何,这块代码一定会被执行
finally 不是必须的,而且上面的try 到 finally之间的所有也不是必须的。看情况添加和选择需要的语句。
3.5 raise 语句
raise 语句使用于抛出异常的。
# 形式
raise [exceptionName [(reason)]]
具体的内容和使用方法可以参考一下的连接:
Python raise用法(超级详细,看了无师自通)