鱼C论坛

 找回密码
 立即注册
查看: 2431|回复: 6

[知识点备忘] 第057讲:异常(下)

[复制链接]
发表于 2022-4-21 18:13:01 | 显示全部楼层 |阅读模式
购买主题 已有 25 人购买  本主题需向作者支付 5 鱼币 才能浏览
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-5-5 10:32:20 | 显示全部楼层
try-except语句花样甚多!本节继续讲解异常,谈到了try-except语句的几种扩展形式:搭配else语句,当try语句中没有检测到异常时执行else语句中的内容;搭配finally语句,无论异常是否发生,都会执行finally语句中的内容,通常用于执行收尾工作,如关闭文件;甚至还可以去掉except语句,用try语句直接搭配finally语句,向世界道一声晚安!异常还可以实现嵌套,当外部异常先发生时,内部异常不会被捕获。
raise语句和assert语句用于主动触发异常。前者拥有偷天换日的特异功能,还可以实现异常链;后者只能引发AssertionError异常,通常用于代码调试,及时止损。
本节最后讲了如何利用异常来实现goto,指哪打哪,例如一下跳出多层嵌套循环,另辟蹊径,简单快捷!由此可见,办法总比困难多,正所谓:“没有办法,我们就创造办法;无路可退,我们就修桥铺路!”
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 5 反对 0

使用道具 举报

发表于 2022-5-7 12:47:47 | 显示全部楼层
raise-from
自爆异常!注意它不可以生成不存在的异常。
  1. raise ValueError("我说我有错!")
  2. >>>
  3. Traceback (most recent call last):
  4.   File "<pyshell#31>", line 1, in <module>
  5.     raise ValueError("我说我有错!")
  6. ValueError: 我说我有错!
复制代码

python默认是不可以一次性跳出多个循环的,我们可以利用异常来实现这个需求:
  1. try:
  2.     while True:
  3.         while True:
  4.             for i in  range(10):
  5.                 if i > 3:
  6.                     raise
  7.                 print(i)
  8.             print("被跳过~")
  9.         print("被跳过~")
  10.     print("被跳过~")
  11. except:
  12.     print("我一下子就出来啦!")

  13. >>>   
  14. 0
  15. 1
  16. 2
  17. 3
  18. 我一下子就出来啦!
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 2 反对 0

使用道具 举报

发表于 2022-11-9 14:53:31 | 显示全部楼层
滴滴滴~打卡!

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-12 13:13:13 | 显示全部楼层
Learning...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-8 20:09:51 | 显示全部楼层
fishcyou 发表于 2022-5-7 12:47
raise-from
自爆异常!注意它不可以生成不存在的异常。

牛的牛的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-1-7 15:58:07 | 显示全部楼层
打卡
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-12 14:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表