10.1 抛出异常
- 当python试图执行无效代码时,就会抛出异常;
- 抛出异常相当于:停止运行这个函数长得代码,将程序执行转到except语句中
- 抛出异常只用raise语句,raise语句包含:①raise关键字;②对Exception函数的调用;③传递给Exception函数的字符串,包含有用的出错信息
>>> raise Exception (‘That is the error message.’)
- 若没有try和except语句覆盖抛出异常的raise语句,程序会崩溃,因此,通常raise语句在一个函数中,try和except语句在调用函数的代码中
10.2 取得反向跟踪的字符串
-
反向跟踪的定义:如果python遇到 错误,他会生成一些错误信息,称为反向追踪
-
反向追踪包含:①出错信息;②导致该错误的代码执行号;③调用栈,即导致该错误的函数调用的序列
-
只要抛出的异常没有被处理,python就会显示反向追踪
-
得到异常的反向追踪的信息,同时使用except语句处理该异常:使用traceback.format_exc()函数
-
使用traceback.format_exc()函数,需要导入traceback模块
10.3 断言
- 断言:是一个检查,确保代码没有做什么明显错误的事
- 由assert语句执行这些检查,若检查失败,则抛出异常10.4.1
- assert语句包含:①assert关键字;②条件,即求为True或者False的表达式;③逗号;④当条件为False时现实的字符串
10.4 日志
- 记日志的好处:理解程序中发生的事,以及事情发生的顺序
- python的logging模块可创建自定义的消息记录
- 一方面,日志消息将描述程序执行何时到达日志函数调用,并列出指定变量当时的值;另一方面,缺失日志消息表明有一部分代码被跳过,从未执行
10.4.1 使用日志模块
- 导入logging模块
- python记录一个事情的日志时,会创建一个LogRecord对象,保存关于该事件的信息
- logging模块的函数可让你指定想看到的LogRecord对象的细节,以及希望的细节展示方式
10.4.2 日志级别
- 日志级别:提供一种方式,按重要性对日志消息进行分类
- 日志级别的好处:可以改变想看到的日志消息的优先级
10.4.3 禁用日志
- 调试玩程序之后,如果不希望所有这些日志消息出现在屏幕上,可采用禁用日志
- logging.disable(0函数:手工删除所有的日志调用;或者向其 传入一个日志级别,他就会禁止该级别和更低级别的所有日志消息
- 禁止所有日志可在程序中添加:logging.disable(logging.CRITICAL)
10.4.4 将日志记录到文件
- 除了将日志消息显示在屏幕上,还可将日志消息写入文本文件中
- logging.basicConfig()函数:接受filename关键字参数,将日志信息保存在myProgramLog.txt文件中
10.5 IDLE的调试器
- 调试器是IDLE的一项功能,让你每次执行一行程序。调试器将运行一行代码,然后等待你告诉他继续。
- 启用调试器:在交互式环境窗口点击Debug—Debugger,就能打开调试控制窗口(Debug Control)
- 调试控制窗口出现后,勾选4个复选框:Stack Locals Source Globals,这样窗口显示全部调试信息
10.5.1 Go
点击Go按钮将导致程序正常执行至终止,或者到达一个断点
10.5.2 Step
点击Step按钮将导致调试器执行下一行代码,然后再次暂停
- 如果变量的值发生变化,调试控制窗口的全局变量和局部变量列表会更新
- 如果下一行代码是一个函数调用,调试器会步入那个函数,体哦啊到该函数的第一行代码
10.5.3 Over
点击Over按钮将执行下一行代码,与Step按钮类似
- 如果下一行代码是函数调用,over按钮会跨过该函数的代码
- 该函数的代码将全速执行,调试器将在该函数返回后暂停
10.5.4 Out
点击out按钮将导致调试器全速执行代码行,直至他从当前函数返回
10.5.5 Quit
点击Quit按钮将导致马上终止该程序
10.5.6 断点
- 断点可以设置在特定的代码行上,当程序执行达到该行时,它迫使调试器暂停
- 设置断点的方法:在文本编辑器中该行代码点击右键,并选择Set Breakpoint
- 清除断点的方式:在文本编辑器章该行代码点击右键,并此从菜单中选择Clear Breakpoint
- 带有断点的代码行会在文本编辑器中以黄色高亮显示