Python基础教程(微课版)ch09_第1页
Python基础教程(微课版)ch09_第2页
Python基础教程(微课版)ch09_第3页
Python基础教程(微课版)ch09_第4页
Python基础教程(微课版)ch09_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第1页第9章程序调试和异常处理本章概述本章的学习目标主要内容第2页本章概述Python内置了一套异常处理机制,来帮助我们进行错误处理。跟踪程序的执行,查看变量的值是否正确,称为调试。Python的pdb可以单步方式执行代码。有了良好的测试,可以在程序修改后反复运行,确保程序输出符合编写的测试。第3页本章的学习目标了解Python中的两种错误——语法错误和异常,及其区别;了解常用的内置异常,以及异常继承关系;掌握异常的处理方法try…catch…finally…;掌握raise主动抛出异常的方式;掌握异常的追踪及记录;掌握常用的程序调试方法;了解测试的编写和运行方法。第4页主要内容9.1异常9.2异常处理9.3程序调试9.4单元测试9.5文档测试9.6本章小结第5页9.1异常错误与异常的概念Python内置异常requests模块的相关异常用户自定义异常第6页错误与异常的概念错误是无法通过其他代码进行处理问题,如语法错误和逻辑错误,语法错误是单词或格式等写错,只能根据系统提示去修改相应的代码,逻辑错误是代码实现功能的逻辑有问题,系统不会报错,也是只能找到相应的代码进行修改。而异常是程序执行过程中,出现的未知问题,这里语法和逻辑都是正确的,可以通过其他代码进行处理修复,如可以通过if判定语句来避免对年龄进行赋值时输入了字符而出现异常的情况,如使用捕捉异常可以避免除零异常等。第7页Python内置异常BaseException是所有内置异常的基类,但用户定义的类并不直接继承BaseException,所有的异常类都是从Exception继承,且都在exceptions模块中定义。BaseException#所有异常的基类+--SystemExit#解释器请求退出+--KeyboardInterrupt#用户中断执行(通常是输入^C)+--GeneratorExit#生成器(generator)发生异常来通知退出+--Exception#常规异常的基类 +--…… +--……第8页requests模块的相关异常requests模块内置异常类的层次结构如下:IOError+--RequestException#处理不确定的异常请求

+--HTTPError#HTTP错误

+--ConnectionError#连接错误

|+--ProxyError#代理错误

|+--SSLError#SSL错误

|+--ConnectTimeout(+--Timeout)#(双重继承,下同)尝试连接到远程服务器时请求超时,产生此错误的请求可以安全地重试。

+--Timeout#请求超时+--URLRequired#发出请求需要有效的URL+--TooManyRedirects#重定向太多

+--MissingSchema(+--ValueError)#缺少URL架构(例如http或https)+--InvalidSchema(+--ValueError)#无效的架构,有效架构请参见defaults.py+--InvalidURL(+--ValueError)#无效的URL|+--InvalidProxyURL#无效的代理URL+--InvalidHeader(+--ValueError)#无效的Header+--ChunkedEncodingError#服务器声明了chunked编码但发送了一个无效的chunk+--ContentDecodingError(+--BaseHTTPError)#无法解码响应内容

+--StreamConsumedError(+--TypeError)#此响应的内容已被使用

+--RetryError#自定义重试逻辑失败

+--UnrewindableBodyError#尝试倒回正文时,请求遇到错误

+--FileModeWarning(+--DeprecationWarning)#文件以文本模式打开,但Requests确定其二进制长度

+--RequestsDependencyWarning#导入的依赖项与预期的版本范围不匹配Warning+--RequestsWarning#请求的基本警告第9页用户自定义异常在try语句块中,抛出用户自定义的异常后执行except部分,变量e是用于创建MyError类的实例。示例如下:classMyError(Exception): def__init__(self,msg): self.msg=msg

def__str__(self): returnself.msg

try: raiseMyError('类型错误')exceptMyErrorase: print('Myexceptionoccurred',e.msg)第10页主要内容9.1异常9.2异常处理9.3程序调试9.4单元测试9.5文档测试9.6本章小结第11页9.2异常处理捕获所有异常捕获指定异常捕获多个异常异常中的else异常中的finallyraise主动抛出异常

采用traceback模块查看异常第12页捕获所有异常捕获所有异常,包括键盘中断和程序退出请求(用sys.exit()就无法退出程序了,因为异常被捕获了),因此慎用。捕获的语法格式如下:try:<语句>except:print('异常说明')第13页捕获指定异常可以捕获指定的异常,语法格式如下:try:<语句>except<异常名>:print('异常说明')第14页捕获多个异常捕获多个异常有两种方式,第一种是一个except同时处理多个异常,不区分优先级语法格式如下:try:<语句>except(<异常名1>,<异常名2>,...):print('异常说明')第二种是区分优先级的,语法格式如下:try:<语句>except<异常名1>:print('异常说明1')except<异常名2>:print('异常说明2')except<异常名3>:print('异常说明3')第15页异常中的else如果判断完没有某些异常之后还想做其他事,就可以使用下面这样的else语句。语法格式如下:try:<语句>except<异常名1>:print('异常说明1')except<异常名2>:print('异常说明2')else:<语句>#try语句中没有异常则执行此段代码第16页异常中的finallytry...finally...语句无论是否发生异常都将会执行最后的代码。语法格式如下:try:<语句>finally:<语句>第17页raise主动抛出异常可以使用raise语句自己触发异常,raise语法格式如下:raise[Exception[,args[,traceback]]]语句中Exception是异常的类型(例如ValueError),参数是一个异常参数值。该参数是可选的,如果不提供,异常的参数是"None"。最后一个参数是跟踪异常对象,也是可选的(在实践中很少使用)。第18页采用traceback模块查看异常发生异常时,Python能“记住”引发的异常以及程序的当前状态。Python还维护着traceback(跟踪)对象,其中含有异常发生时与函数调用堆栈有关的信息。格式如下:try:blockexcept:

traceback.print_exc()第19页主要内容9.1异常9.2异常处理9.3程序调试9.4单元测试9.5文档测试9.6本章小结第20页9.3程序调试调试断言loggingpdbpdb.set_trace()IDE第21页主要内容9.1异常9.2异常处理9.3程序调试9.4单元测试9.5文档测试9.6本章小结第22页9.4单元测试单元测试:用来对一个模块、一个函数或者一个类来进行正确性检验的测试工作。运行单元测试:最简单的运行方式是在mydict_test.py的最后加上两行代码:if__name__=='__main__':unittest.main()setUp与tearDown:可以在单元测试中编写两个特殊的setUp()和tearDown()方法。这两个方法会分别在每调用一个测试方法的前后分别被执行。第23页主要内容9.1异常9.2异常处理9.3程序调试9.4单元测试9.5文档测试9.6本章小结第24页9.5文档测试Python内置的“文档测试”(doctest)模块可以直接提取注释中的代码并执行测试。doctest严格按照Python交互式命令行的输入和输出来判断测试结果是否正确。只有测试异常的时候,可以用...表示中间一大段烦人的输出。第25页主要内容9.1异常9.2异常处理9.3程序调试9.4单元测试9.5文档测试9.6本章小结第26页9.6本章小结异常和错误处理是

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论