- 1、本文档共40页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
2024/9/16第9章调试及异常主讲人:
目录2024/9/1621.调试2.Python中的异常类3.捕获和处理异常4.两种处理异常的特殊方法5.raise语句6.采用sys模块回溯最后的异常
2024/9/161.调试在本节中,我们首先描述Python在发现语法错误时的处理方式,之后了解Python在发现未处理异常时生成的回溯信息,最后讲解怎样将科学的方法用于调试。
2024/9/161.1.1处理编译时的错误看一个实例:Fileblocks.py,line383 ifBlockOutput.save_blocks_as_svg(blocks,svg) ^SyntaxError:invalidsyntax1.调试
2024/9/161.1.1处理编译时的错误1.调试出现这样问题的原因是我们忘记在if语句条件结尾处放置一个括号。下面给出另一个相当常见的错误实例,但是从中看不出明显的错误。?Fileblocks.py,line385 exceptValueErroraserr: ^SyntaxError:invalidsyntax
2024/9/161.1.1处理编译时的错误1.调试try: blocks=parse(blocks) svg=file.replace(.blk,.svg) ifnotBlockOutput.save_blocks_as_svg(blocks,svg): print(Error:failedtosave{0}.format(svg)exceptValueErroraserr: …
2024/9/161.1.2处理运行时的错误1.调试如果运行时发生了未处理的异常,Python就将终止执行程序,并以堆栈回溯(Traceback,也称为向后追踪)的形式显示异常发生的上下文。下面给出一个未处理异常发生时打印出的回溯信息:(这里由于代码太长无法给出,只是了解如何找到出错位置。)Traceback(mostrecentcalllast): Fileblocks.py,line392,inmodule main() Fileblocks.py,line381,inmain blocks=parse(blocks) Fileblocks.py,line174,inrecursive_descent_parse returndata.stack[1] IndexError:listindexoutofrange
2024/9/161.1.2处理运行时的错误1.调试尽管回溯信息初看之下让人困惑不解,但在理解了其结构之后我们会发现它是非常有用的。在上面的实例中,回溯信息告诉了我们应该去哪里寻找问题的根源,当然我们必须自己想办法去解决问题。
2024/9/161.1.2处理运行时的错误1.调试第2个例子Traceback(mostrecentcalllast): Fileblocks.py,line392,inmodule main() Fileblocks.py,line383,inmain ifBIockOutput.save_blocks_as_svg(blocks,svg): FileBltickOutput.py,line141,insave_blocksas_svg widths,rows=compute_widths_and_rows(cells,SCALEBl} FileBIockOutput.py,line95;incompute_widths_and_rows width=len(cell.text)//cell.columnsZeroDivisionError:integerdivisionormodulobyzero
2024/9/161.1.2处理运行时的错误1.调试这里,问题出在blocks.py程序调用的BlockOutput.py模块中,这一回溯信息使得我们定位问题变得容易,但它并没有说明错误在哪里发生。第95行BlockOutput.py模块的compute_widths_and_rows()函数中,cell.columns的值明显是错误的。不管怎么说,这是导致ZeroDivisionError异常的问题所在,同时我们必须查看前面的错误信息来了解为什么cell.columns会被赋予错误的值。
2024/9/161.
文档评论(0)