文章目录
- python初识异常
- 异常中的finally
- 自定义异常类型与自定义抛出异常
- 自定义抛出异常---raise关键字
- 自定义异常类型
- 扩展:try except finally else结合使用
python初识异常
异常中的finally
无论是否发生异常,一定会执行的代码块
在函数中,即便在try或except中进行了return也依然会执行finally语法块
try至少要伴随except或finally中的一个来使用
finally 相当于整个异常处理语句的收尾工作
try:
<代码块1>
except:
<代码块2>
finally:
<代码块3>
例子:
注意代码的执行顺序:
思考:如果finally中也return了,那么会触发哪个return呢?
答:只会返回finally的return
try只与finally结合使用的情况
如果try结合finally使用,不结合except的话会是什么效果?
答:不会抛出异常:
真正在编写代码的时候,不建议这么使用,还是要把异常友好的返回出来。
自定义异常类型与自定义抛出异常
自定义抛出异常—raise关键字
将信息以报错的形式抛出
当python执行到raise关键字的时候,python解释器会将raise后面的错误信息抛出
raise 异常类型(message)
# message:错误信息
# 无返回值
例子:
raise抛出的异常也可以被try except捕获:
注意,raise抛出的是什么异常类型,except在捕获异常的时候要么就是用这个异常类型,要么就用通用异常类型。
自定义异常类型
如何自定义异常类型:
- 继承基类–Exception
- 在构造函数中定义错误信息
class <自定义异常类型>(Exception):
def __init__(self, message):
self.message = message
例子:
扩展:try except finally else结合使用
try except else结合使用时,如果没有抛出异常则执行else中的内容
例子:
自定义一个异常,判断用户输入的字符串长度,如果小于5,则抛出自定义异常。没有抛出异常则提示没有异常发生。最后将用户输入的字符串打印出来。