当前位置: 首页 > backend >正文

暑假Python基础整理 --异常处理及程序调试

异常概念


在程序运行过程中,经常会遇到各种各样的错误,这些错误统称为“异常”。如下表是Python常见的异常与描述:

异常描述
NameError尝试访问一个未声明的变量引发错误
IndexError索引超出序列范围引发错误
IndentationError缩进错误
ValueError传入的值错误
KeyError请求一个不存在的字典关键字引发的错误
IOError输入输出错误(如要读取的文件不存在)
ImportError当import语句无法找到模块引发的错误
AttributeError当尝试访问位置的对象属性时,引发的错误
TypeError类型不合适引发的错误
MemoryError内存不足
ZeroDivisionError当除数为0时引发的错误

异常处理语句


try...except 语句

使用try...except语捕获并处理异常时,把可能产生异常的代码放在try语句块中,把处理结果放在except语句块中:若try执行时出现错误,将会执行except语句块,否则将不执行except语句块,语法结构如下:

try:block1
except [ExceptionName [as alias]]:block2
  • block1:表示可能报错的代码块
  • ExceptionName [as alias]:可选参数,用于指定要捕获的异常。[as alias]表示为当前的异常指定一个别名,通过该别名,可以记录异常的具体内容
  • block2:表示进行异常处理的代码块

在捕捉异常时,如果需要同时处理多个异常,可以在except语句后面使用()将可能出现的异常括起来,间隔使用逗号分割。

try...except...else 语句

还有一种方式是在try...except的基础上加上else子句,用于指定当try语句没有发现异常时要执行的语句。当在try语句执行过程中未发现异常,则执行else子句,否则将不执行。

try...except...finally 语句

完整的异常处理语句应该包含finally代码块,通过情况下,无论程序执行是否出现异常,而finally语句都将会执行。其语法格式如下:

try:block1
except [ExceptionName [as alias]]:block2
finally:block3
使用 raise 语句抛出异常

如果某个函数或者方法可能会产生异常,但不想在当前函数或者方法中处理这个异常,则可以使用 raise 语句在函数或者方法中抛出异常,其语法格式如下:

raise [ExceptionName[(reason)]]
  • ExceptionName [(reason)]:可选参数,用于指定抛出的异常名称,以及异常信息的相关描述。若省略,就会把当前的错误原样抛出。
  • reason:参数reason可以省略,若省略,则在抛出异常时,不附带任何描述信息。

程序调试


使用 IDLE 进行程序调试

1.首先打开IDLE Shell窗口,在主菜单选择 Debug -> Debugger 菜单项,将打开Debug Control 对话框,同时IDLE Shell 窗口将显示[DEBUG ON]表示已处于调试状态。如下图:

在这里插入图片描述

2.然后在IDLE Shell窗口中选择 File -> Open 菜单项,打开需要调试的文件,然后在想要添加断点的行上右击选择 Set Breakpoint菜单项可以添加断点,在想要取消断点的行上右击选择 Set Breakpoint菜单项可以取消断点。添加断点的行将以黄色底纹标记,如下图:

在这里插入图片描述

3.在添加所需的断点(添加断点的原则是:程序执行到这个位置时,想要查看某些变量的值,就在这个位置添加一个断点)后,按F5键,执行程序,这是Debug Control对话框中显示程序的执行信息,选择Globals复选框,将显示全局变量,默认只显示局部变量。如下图:

在这里插入图片描述

4.图中可以看到调试工具栏处的提供的5个按钮。此处单击Go按钮继续执行程序,直到执行到所设置的第一个断点处,程序才被暂停执行,在此期间,Debug Control窗口的数据将发生变化,如下图:

在这里插入图片描述

5.继续点击Go按钮,将执行到下一个断点,查看变量的变化,直到全部断点全部执行完毕。调试工具栏的按钮状态将变为不可用,如图:

在这里插入图片描述

6.程序调试完成后,可以关闭Debug Control对话框,此时Python Shell中将显示[DEBUG OFF]表示已经结束调试。

调试工具栏的5个按钮介绍:

按钮名称功能
Go执行跳至断点操作
Step进入要执行的函数
Over用于单步执行
Out跳出所在的函数
Quit结束调试

在调试过程中,如果所设置的断点处有其他函数调用,还可以单击Step 按钮进入函数内部.当确定该函数没有问题时,可以单击 Out按钮跳出该函数;或者在调试的过程中,当需要对已经发现的问题的原因进行修改时,可以直接单击 Quit 按钮结束调试。另外,如果调试的目的不是很明确(即不确认问题的位置),也可以直接单击 Step 按钮进行单步执行,这样可以清晰地观察程序的执行过程和数据的变量,方便找出问题。

使用 assert 语句调试程序

还可以在代码中通过print()函数把可能出现的变量输出,便于查看,但是会产生很多冗余信息,所以比较麻烦。因此,Python还提供了一种方法,即使用assert语句进行调试。它一般被用于对程序某个时刻必须满足的条件进行验证。其语法格式如下:

assert expression[,reason]
  • expression:条件表达式。如果表达式为真,则什么都不做,否则,将抛出AssertionError异常。
  • reason:可选参数,用于对判断条件进行描述,为了以后更好的直到哪儿出现了问题。

文章地址: 暑假Python基础整理 – 异常处理及程序调试

http://www.xdnf.cn/news/15478.html

相关文章:

  • 从 0 到 1 掌握 自研企业级分布式 ID 发号器
  • 《C++模板高阶机制解析:非类型参数、特化设计与分离编译实践》
  • 【GEOS-Chem模拟教程第一期上】气溶胶专用/碳气体/全化学模拟
  • x86版的ubuntu上使用qemu运行arm版ubuntu
  • 学习软件测试的第十六天
  • HOOPS Communicator 2025.5.0版本更新速览:性能、测量与UI全面优化
  • 将 Vue 3 + Vite + TS 项目打包为 .exe 文件
  • Kubernetes 架构原理与集群环境部署
  • Mybatis05-动态sql
  • Java实现word、pdf转html保留格式
  • HTTP性能优化实战技术
  • 【电脑】显卡(GPU)的基础知识
  • 暑期算法训练.1
  • 【解决】联想电脑亮度调节
  • 行为模式-状态模式
  • 前端打包自动压缩为zip--archiver
  • MongoDB数据问题说明
  • 大模型在1型糖尿病肾病V期预测及治疗方案制定中的应用研究
  • 《大数据技术原理与应用》实验报告五 熟悉 Hive 的基本操作
  • 用uniapp开发鸿蒙应用(暂停更新-根据项目更新,现在项目未开始)
  • LangChain智能体开发实战:从零构建企业级AI助手
  • 17、鸿蒙Harmony Next开发:状态管理(组件拥有的状态和应用拥有的状态)
  • 3种添加视频水印的加密方式,守护视频安全!
  • OpenCV 对比度拉伸图像增强函数contrastStretching()
  • 基于UDP/IP网络游戏加速高级拥塞控制算法(示意:一)
  • 21-C#的委托简单使用-1
  • 【zynq7020】PS的“Hello World”
  • Android弹窗
  • 【C++】初识C++(1)
  • 映美打印机-URL页面打印