Chinaunix首页 | 论坛 | 博客
  • 博客访问: 217759
  • 博文数量: 261
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 2641
  • 用 户 组: 普通用户
  • 注册时间: 2020-08-10 06:35
文章分类
文章存档

2025年(13)

2024年(33)

2023年(86)

2022年(53)

2021年(42)

2020年(34)

我的朋友

分类: Python/Ruby

2025-02-21 14:22:36

异常处理之后做些什么_try语句的完全体_{BANNED}最佳终_finally 回忆上次内容
  • 我们了解了 try 的细节
  • except 可以 捕获到异常
  • 但报错比较简单


添加图片注释,不超过 140 字(可选)
  • 游乐场里面的 报错
  • 更全 更丰富
  • 还告诉哪个文件、第几行

添加图片注释,不超过 140 字(可选)
  • 可以跟踪到 {BANNED}最佳详细 报错信息 吗?????
添加图片注释,不超过 140 字(可选)
报错信息
  • 可以输出完整的报错信息吗?
  • 包含文件和行号那种的详细信息

添加图片注释,不超过 140 字(可选)
  • 运行结果
添加图片注释,不超过 140 字(可选)
  • 告诉了我们
  • t.py 第1行
  • 发生了 NameError

询问ai
添加图片注释,不超过 140 字(可选)
修改
  • 导入
  • trackback模块
  • 获得 跟踪信息

import traceback try: a except: print("in except---------") traceback.print_exc() print("in except=========")
  • 运行结果
  • 不但保留了系统的报错
  • 还把错误位置也指出了

添加图片注释,不超过 140 字(可选)
  • 应该 如何理解 traceback中的
  • print_exc函数呢?

游乐场
  • traceback 是 模块(module)
  • import traceback
  • 引入 这个模块(module)

添加图片注释,不超过 140 字(可选)
  • traceback.print_exc
  • .(点)的意思 是 里面的
  • traceback 里面的 print_exc
  • 作用是输出异常信息

添加图片注释,不超过 140 字(可选)
  • try 语句当中
  • 除了 except 和 else 之外
  • 还有 其他子句 吗?

finally
  • try 之后分支
  • 要么 执行中 捕获到了异常
  • 立即停止 try中的部分
  • 跳入 对应的except 执行

  • 要么 try全部执行完
  • 也 没有捕获到异常
  • 执行 else 子句


添加图片注释,不超过 140 字(可选)
  • 无论是except 还是 else
  • {BANNED}最佳后 总要执行finally 子句

finally
  • finally
  • 是一个收尾的语句

import traceback try: i = int("123") j = i / 0 except ValueError: print(ValueError) except NameError: print(NameError) except Exception as e: traceback.print_exc() else: print("Nothing Wrong") finally: print("At Last...finally...")
  • 结果
添加图片注释,不超过 140 字(可选)
finally的帮助 help("try")
  • 如果执行过程中
  • 还有 任何的异常 没有被处理
  • 那么就 把这个异常 临时存住
  • 等finally执行之后
  • 再抛出 这个异常

  • 如果遇到return break continue之类 强制跳转语句
  • 这个异常 就 被忽略了


添加图片注释,不超过 140 字(可选)
  • saved exception re-raised
  • 这如何理解?

{BANNED}最佳后再抛异常 try: a except ValueError: print(ValueError) else: print("Nothing Wrong") finally: print("finally----------")
  • 运行结果
添加图片注释,不超过 140 字(可选)
  • except 子句 处理不来 NameError
  • 把这个 Error 先存着
  • 跳过else
  • 进入finally
  • finally 执行后
  • 再把 这个Error
  • 直接 抛给 系统

  • 再看一个例子
理解finally
  • try里面
  • 第2行 出现错误 abc无法转化为整型变量
  • ValueError

  • 不执行后面的
  • d = i / 0

  • 直接 跳到except

try: i = int("abc") d = i / 0 except ZeroDivisionError: print(ZeroDivisionError) else: print("Nothing Wrong") finally: print("At last...")
  • except中
  • 处理不来 ValueError
  • 于是ValueError就存着

  • 由于出现了Error
  • 已经进入了except部分
  • 无法进入else

  • {BANNED}最佳后进入finally执行
  • 输出了At Last

  • 执行完finally语句块
  • 才把这个ValueError{BANNED}最佳后抛出来

添加图片注释,不超过 140 字(可选)
  • 这是finally的执行逻辑
  • {BANNED}最佳终 收尾

  • 有什么实践中的例子吗?
应用场景
  • 下图是
  • python连接数据库的类库
  • psycopg

添加图片注释,不超过 140 字(可选)
  • try的具体应用
  • 如果都成功 就 提交(commit)
  • 如果失败 就 回滚(rollback)
  • 无论成功失败 {BANNED}最佳后都要 断开连接

  • finally 就像python 中的
  • Guido一样
  • {BANNED}最佳终决策

仁慈的独裁者BDFL
  • 彻底的仁慈
  • 意味着 没有主见和行动力下降

  • 彻底的独裁
  • 则会 失去广泛的帮助

添加图片注释,不超过 140 字(可选)
  • 仁慈和独裁
  • 像是 矛盾的两面

  • 但是
  • Guido却 很好地 平衡了两者

  • 除了 Guido之外
  • 很多 开源项目的 老大
  • 也有 类似的称号

添加图片注释,不超过 140 字(可选)
  • Guido是
  • 如何成长的呢?

扩展视野
  • Guido 利用假期去
  • 当时 it的 潮头
  • 美国硅谷
  • 做 一些WorkShop实践课程
  • 推广python

添加图片注释,不超过 140 字(可选)
  • 很早 接触到了
  • 互联网的 发展趋势

互联网
  • Guido做了
  • 一个浏览器grail

添加图片注释,不超过 140 字(可选)
网络集聚
  • 网络的能量越来大
  • 这 为python的发展 做了很好的准备
  • 媒介
  • 从报纸、杂志、电视
  • 发展到邮件、论坛和浏览器


添加图片注释,不超过 140 字(可选)
  • 有人 就有 应用
  • 有应用 就更有 人
  • 于是会形成 正反馈
  • 有了社区 就会有更多的人 加入社区

  • 其实学编程 也是一样
  • 越熟练 就会越自信
  • 越自信 也就会越熟练

Guido 作为 finally
  • 人很多 之后
  • 众说纷纭
  • 往往需要
  • 一个{BANNED}最佳终的决策

添加图片注释,不超过 140 字(可选)
  • finally
  • Guido 完成决策
  • 决策并不是为了显示
  • 自己权威的位置
  • 所有者 的权限

  • 那样会 让开发者远离 python项目


  • 决策 是因为
  • Guido 比任何人 都更 了解项目
  • 对于决策 都能做出 合理的解释

  • 水瓶座出 生的Guido
  • 注重 社群的力量

水瓶座时代
  • 2023年
  • 冥王星 将从摩羯座 进入 水瓶座
  • 将迎来 20年左右的 转折窗口
  • 我们人类社会 开始转变

添加图片注释,不超过 140 字(可选)
  • 地球 迎来了 水瓶座时代
  1. 个人更着重于
  2. 自身内在精神灵性方面的 成长
  3. 不再执着于 外在物质欲望的 享受
  4. 水瓶座象征的是集体、群众和社区
  5. 意味着乐于喜悦服务他人
  6. 我们的 人际关系、生活方式 将发生重大变化
  7. 人类的集体意识会逐渐提升
  8. 可以更容易 连结智慧本源 以及 更高维度的世界
  9. 科学技术、人道主义及公正平等
  10. 模式创新、理想社会
  11. 将会是全球议题中的 重中之重
  12. 地球环境趋于恶化,气候多变
  13. 全球变暖,能源安全变得极为重要
  14. 人类应用高科技对空气、水以及土壤进一步改造会变得困难
  15. 并且加剧了 全球环境恶化

总结
  • 我们了解了 try 的完全体
  • try
  • 尝试运行

  • except
  • 发现异常时运行的代码块

  • else
  • 没有发现异常时运行的代码块

  • finally
  • 无论是否发现异常{BANNED}最佳终都要运行的代码块


添加图片注释,不超过 140 字(可选)
  • 为什么print函数
  • 不用声明和导入?????
  • 直接就能用呢?????

  • 我们下次再说!????
  • 蓝桥->
  • github->
  • gitee->


阅读(11) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~