前言:
作者简介:短尾巴小鳄鱼 ,一位不放弃自己的上进卷妹
💬 如果文章知识点有错误的地方,请留言指正~和大家一起学习,一起进步
💬 人生格言:昨日种种,皆成今我。今日种种,方成新我。切莫踌躇,莫停留,莫沉溺💬
如果感觉博主的文章还不错的话,还请关注、点赞、收藏三连支持一下博主哦
无论是否发生异常,一定会执行的代码块
在函数中,即便在try或except中进行了return也依然会执行finally语法块
try至少要伴随except或finally中的一个来使用
finally 相当于整个异常处理语句的收尾工作
try:
<代码块1>
except:
<代码块2>
finally:
<代码块3>
例子:
注意代码的执行顺序:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YRsKVMc3-1659167880801)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20220730145608291.png)]](https://1000bd.com/contentImg/2022/08/02/112239765.png)
思考:如果finally中也return了,那么会触发哪个return呢?
答:只会返回finally的return
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FjJfQfCt-1659167880803)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20220730150111546.png)]](https://1000bd.com/contentImg/2022/08/02/112239860.png)
try只与finally结合使用的情况
如果try结合finally使用,不结合except的话会是什么效果?
答:不会抛出异常:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0Qtr8kj6-1659167880806)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20220730151246387.png)]](https://1000bd.com/contentImg/2022/08/02/112239959.png)
真正在编写代码的时候,不建议这么使用,还是要把异常友好的返回出来。
将信息以报错的形式抛出
当python执行到raise关键字的时候,python解释器会将raise后面的错误信息抛出
raise 异常类型(message)
# message:错误信息
# 无返回值
例子:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-12HJWWBd-1659167880808)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20220730152338132.png)]](https://1000bd.com/contentImg/2022/08/02/112240059.png)
raise抛出的异常也可以被try except捕获:
注意,raise抛出的是什么异常类型,except在捕获异常的时候要么就是用这个异常类型,要么就用通用异常类型。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LF6uxNYE-1659167880809)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20220730152539270.png)]](https://1000bd.com/contentImg/2022/08/02/112240162.png)
如何自定义异常类型:
class <自定义异常类型>(Exception):
def __init__(self, message):
self.message = message
例子:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DiQUB9m8-1659167880810)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20220730154132306.png)]](https://1000bd.com/contentImg/2022/08/02/112240274.png)
try except else结合使用时,如果没有抛出异常则执行else中的内容
例子:
自定义一个异常,判断用户输入的字符串长度,如果小于5,则抛出自定义异常。没有抛出异常则提示没有异常发生。最后将用户输入的字符串打印出来。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gVTNqxUU-1659167880811)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20220730155615202.png)]](https://1000bd.com/contentImg/2022/08/02/112240401.png)