show | version | enable_checker |
---|---|---|
step |
1.0 |
true |
- 了解了 try 的细节
- try
- 尝试运行
- except
- 发现异常时运行的代码块
- else
- 没有发现异常时运行的代码块
- try
- 注意!
- 都要有英文半角的冒号
- 子句都要通过 4 个字符的缩进控制范围
- 我们编的py程序
- 报错比较简单
- 游乐场里面的 报错
- 更全 更丰富
- 可以借鉴 游乐场的 报错信息吗?🤔
- 可以输出完整的报错信息吗?
- 包含文件和行号那种的详细信息
- 运行结果
- 导入trackback模块
- 就是跟踪信息
import traceback
try:
a
except:
print("in except---------")
traceback.print_exc()
print("in except=========")
- 运行结果
-
这样不但保留了系统的报错
- 还把错误位置也指出了
-
应该如何理解traceback中的print_exc函数呢?
- traceback 是一个模块(module)
- import traceback
- 可以 引入这个模块(module)
- traceback.print_exc
.(点)
的意思是里面的- 整体是traceback里面的print_exc
- 求助结果
-
函数的作用是输出异常信息
-
try 语句当中
- 除了 except 和 else 之外
- 还有
其他
子句 吗?
- finally
- 是一个收尾的语句
try:
i = int("123")
j = i / 0
except ValueError:
print(ValueError)
except NameError:
print(NameError)
except Exception as e:
print(e)
else:
print("Nothing Wrong")
finally:
print("At Last...finally...")
- try 之后分支
- 要么 执行中 捕获到了异常
- 立即停止try中的部分
- 进入 except 子句 执行
- 要么 执行完 try
- 也 没有捕获到异常
- 执行 else 子句
- 要么 执行中 捕获到了异常
- 无论是except 还是 else
- 都 试一下
- 最后 总要执行finally 子句
- 如果执行过程中
- 还有 任何的异常
- 但是这个异常 没有被处理
- 那么就把这个异常 临时存住
- 等待finally执行之后
- 再抛出这个异常
- 如果遇到return break continue之类强制跳转语句
- 这个异常就被忽略了
- 还有 任何的异常
- 这如何理解?
try:
a
except ValueError:
print(ValueError)
else:
print("Nothing Wrong")
finally:
print("finally----------")
- 运行结果
- except 子句 处理不来 NameError
- 把这个 Error 先存着
- 跳过else
- 进入finally
- finally 执行后
- 再把 这个Error
- 直接 抛给 系统
- 再看一个例子
- try里面
- 第二行 出现错误
- 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没有被处理
- 于是ValueError就存着
- 由于出现了Error
- 已经进入了except
- 无法进入else
- 最后进入finally执行
- 输出了At Last
- 执行完finally语句块
- 才把这个ValueError最后抛出来
- 这是finally的执行逻辑
- 最终 收尾
- 就像python 中的
- Guido一样
- 最终决策
- 彻底的仁慈
- 意味着 没有主见和行动力下降
- 彻底的独裁
- 则会 失去广泛的帮助
- 仁慈和独裁
- 像是 矛盾的两面
- 但是
- Guido却 很好地 平衡了两者
- 除了 Guido之外
- 很多 开源项目的 老大
- 也有 类似的称号
- Guido是
- 如何
成长
的呢?
- 如何
- Guido 利用假期去美国
- 做 一些WorkShop实践课程
- 美国硅谷 是 当时 it的 潮头
- 很早 接触到了
- 互联网的 发展趋势
- Guido做了
- 一个浏览器grail
- 水瓶座出 生的Guido
- 注重 社群的力量
- 2023年
- 冥王星 将从摩羯座 进入 水瓶座
- 将迎来 20年左右的 转折窗口
- 我们人类社会 开始转变
- 地球 迎来了 水瓶座时代
- 个人更着重于
- 自身内在精神灵性方面的 成长
- 不再执着于 外在物质欲望的 享受
- 水瓶座象征的是集体、群众和社区
- 意味着乐于喜悦服务他人
- 我们的 人际关系、生活方式 将发生重大变化
- 人类的集体意识会逐渐提升
- 可以更容易 连结智慧本源 以及 更高维度的世界
- 科学技术、人道主义及公正平等
- 模式创新、理想社会
- 将会是全球议题中的 重中之重
- 地球环境趋于恶化,气候多变
- 全球变暖,能源安全变得极为重要
- 人类应用高科技对空气、水以及土壤进一步改造会变得困难
- 并且加剧了 全球环境恶化
- 网络的能量越来大
- 这 为python的发展 做了很好的准备
- 媒介
- 从报纸、杂志、电视
- 发展到邮件、论坛和浏览器
- 有人 就有 应用
- 有应用 就更有 人
- 于是会形成 正反馈
- 有了社区 就会有更多的人 加入社区
- 其实学编程 也是一样
- 越熟练 就会越自信
- 越自信 也就会越熟练
- 人很多 之后
- 众说纷纭
- 往往需要
- 一个最终的决策
- finally
- Guido 完成决策
- 决策并不是为了显示
- 自己权威的位置
- 所有者 的权限
- 那样会 让开发者远离 python项目
- 决策并不是为了显示
- Guido 完成决策
- 决策 是因为
- Guido 比任何人 都更 了解项目
- 对于决策 都能做出 合理的解释
- 我们了解了 try 的完全体
- try
- 尝试运行
- except
- 发现异常时运行的代码块
- else
- 没有发现异常时运行的代码块
- finally
- 无论是否发现异常最终都要运行的代码块
- try
- 上图就是python连接数据库的类库psycopg中
- try的具体应用
- 如果成功 就 提交commit
- 如果失败 就 回滚rollback
- 无论成功失败 都要 断开连接
- try的具体应用
- python 可以查询
- 导入的模块里面 都有啥吗?🤔
- 我们下次再说!👋