《Python学习手册 第五版》 -第36章 异常的设计

2021-05-04 13:27

阅读:375

标签:image   for   python对象   元组   函数   学习笔记   raise   主题   打印   

本章是关于异常内容讲解的最后一章,重要说明关于异常的设计,就是如何用好异常

本章重点内容:

1、嵌套异常处理程序

2、异常的习惯用法

3、异常设计的建议与陷阱

接下来展开说明

1、嵌套异常处理程序

前面的例子中,我们只是使用了单个的try语句来捕捉异常,如果try语句中还有try语句,从代码运行的控制流来看,那就是try语句的嵌套,

try语句的嵌套,因为不用的情况,会有所不同

try/except语句:当异常最终引发时,Python会调回到匹配该异常,最近进入的try语句,执行该语句的except分句,然后再try语句后继续下去

try/finally语句:每个嵌套的finally代码快都会一次执行,Python会持续把异常往上传递到其他try语句上,而最终可能达到顶层默认处理程序

通过代码示例来了解这个概念会更清楚,如下:

技术图片

 

 以上代码创建了一个try/except语句的嵌套,通过最后的执行可以看到,异常时触发了action1中的,而最外层的try语句并没有触发,所以最后打印出来的就是‘inner try’

再看一个try/finally语句的例子,如下:

技术图片

 

 通过运行结果可以看到,所有的finally语句都被执行了,最终也引发了异常的提醒说明,这个可以和上面的例子对比来看

2、异常的习惯用法

跳出多重嵌套循环:“go to”

通过以下示例,就会明白什么叫跳出多重嵌套循环:

技术图片

 

 需要特别注意两个while语句的嵌套,如果仅仅是里面while语句结束,外面没有结束还是会不断地循环,而异常,是直接从最里层的循环,跳出来

异常的本质就是提醒,所以由此引申出来的用法就会很多:

-函数可以用raise语句触发状况

-断开文件和服务器连接

-使用外层try语句辅助调试

-显示错误和跟踪

3、异常设计的建议与陷阱

应该包装什么

原则上,所有的语句都可以放到try中,但是这样做很笨,所以要包装什么就显得很重要,这个需要实际的情况而定,而且要有实际项目的经验,大的原则就是经常会失败的操作一般都应该包装在try语句中

捕获了太多:避免空的except分句和Exception异常

直接使用这两个分句很容易,但是有时候会拦截到不属于本层级的异常,根据作者的经验,应当编写尽可能具体化的处理程序

捕获过少:使用基于类的异常分类

另一方面,处理程序额不应过于具体化?为什么?因为系统演化发展,将来会引发其他种类的异常,所以在异常类的设计中,要能考虑到未来的发展,以及代码修改的便捷性

以上就是本章的重点内容

根据作者的说明,截止到本章,滚与Python的主要基础内容都学完了,后面的章节是高级主题的可选阅读,至此,你可以说自己是正式的python程序员了,但是对于我本人来说,还有很长的路要走,现在也只是掌握的最基本最基本的内容,还要融会贯通,还要不断实践

本章结尾处,作者也介绍了Python的工具集、大型项目的开发工具,很多,需要自己在未来的实战中不断尝试学习

以上说明,祝学习愉快,下章见!

 

《Python学习手册 第五版》 每章时间规划及完成进度:

2019.11.25-2019.12.01 第01章,已完成:《Python学习手册 第五版》 -第1章 问答环节

2019.12.02-2019.12.08 第02章,已完成:《Python学习手册 第五版》 -第2章 Python如何运行程序

2019.12.09-2019.12.15 第03章,已完成:《Python学习手册 第五版》 -第3章 你应如何运行Python程序

2019.12.16-2019.12.22 第04章,已完成:《Python学习手册 第五版》 -第4章 介绍Python对象类型

2019.12.23-2019.12.29 第05章,已完成:《Python学习手册 第五版》 -第5章 数值类型

2019.12.30-2020.01.05 第06章,已完成:《Python学习手册 第五版》 -第6章 动态类型

2020.01.06-2020.01.12 第07章,已完成:《Python学习手册 第五版》 -第7章 字符串基础

2020.01.12-2020.01.19 第08章,已完成:《Python学习手册 第五版》 -第8章 列表与字典

2020.01.20-2020.01.26 第09章,已完成:《Python学习手册 第五版》 -第9章 元组、文件与其他核心类型

2020.01.27-2020.02.02 第10章,已完成:《Python学习手册 第五版》 -第10章 Python语句简介

2020.02.03-2020.02.09 第11章,已完成:《Python学习手册 第五版》 -第11章 赋值、表达式和打印

2020.02.10-2020.02.16 第12章,已完成:《Python学习手册 第五版》 -第12章 if测试和语法规则

2020.02.17-2020.02.23 第13章,已完成:《Python学习手册 第五版》 -第13章 while循环和for循环

2020.02.24-2020.03.01 第14章,已完成:《Python学习手册 第五版》 -第14章 迭代和推导

2020.03.02-2020.03.08 第15章,已完成:《Python学习手册 第五版》 -第15章 文档

2020.03.09-2020.03.15 第16章,已完成:《Python学习手册 第五版》 -第16章 函数基础

2020.03.16-2020.03.22 第17章,已完成:《Python学习手册 第五版》 -第17章 作用域

2020.03.23-2020.03.29 第18章,已完成:《Python学习手册 第五版》 -第18章 参数

2020.03.30-2020.04.05 第19章,已完成:《Python学习手册 第五版》 -第19章 函数的高级话题

2020.04.06-2020.04.12 第20章,已完成:《Python学习手册 第五版》 -第20章 推导和生成

2020.04.13-2020.04.19 第21章,已完成:《Python学习手册 第五版》 -第21章 基准测试

2020.04.20-2020.04.26 第22章,已完成 :《Python学习手册 第五版》 -第22章 模块:宏伟蓝图

2020.04.27-2020.05.03 第23章,已完成:《Python学习手册 第五版》 -第23章 模块代码编写基础

2020.05.04-2020.05.10 第24章,已完成:《Python学习手册 第五版》 -第24章 模块包

2020.05.11-2020.05.17 第25章,已完成:《Python学习手册 第五版》 -第25章 高级模块话题

2020.05.18-2020.05.24 第26章,已完成:《Python学习手册 第五版》 -第26章 OOP:宏伟蓝图

2020.05.25-2020.05.31 第27章,已完成:《Python学习手册 第五版》 -第27章 类代码编写基础

2020.06.01-2020.06.07 第28章,已完成:《Python学习手册 第五版》 -第28章 一个更加实际的示例

2020.06.08-2020.06.14 第29章,已完成:《Python学习手册 第五版》 -第29章 类代码编写细节

2020.06.15-2020.06.21 第30章,已完成:《Python学习手册 第五版》 -第30章 运算符重载

2020.06.22-2020.06.28 第31章,已完成:《Python学习手册 第五版》 -第31章 类的设计

2020.06.29-2020.07.05 第32章,已完成:《Python学习手册 第五版》 -第32章 类的高级主题

2020.07.06-2020.07.12 第33章,已完成:《Python学习手册 第五版》 -第33章 异常基础

2020.07.13-2020.07.19 第34章,已完成:《Python学习手册 第五版》 -第34章 异常编写细节

2020.07.20-2020.07.26 第35章,已完成:《Python学习手册 第五版》 -第35章 异常对象

2020.07.27-2020.08.02 第36章,已完成

2020.08.03-2020.08.09 第37章,未完成

2020.08.10-2020.08.16 第38章,未完成

2020.08.17-2020.08.23 第39章,未完成

2020.08.24-2020.08.30 第40章,未完成

2020.08.31-2020.09.06 第41章,未完成

 

以下链接,可以供你了解这个学习笔记的所有章节最新进度

 

《Python学习手册 第五版》 -第36章 异常的设计

标签:image   for   python对象   元组   函数   学习笔记   raise   主题   打印   

原文地址:https://www.cnblogs.com/zhangjiyou/p/13195103.html


评论


亲,登录后才可以留言!