news 2026/9/5 23:32:35

python学习笔记8--- 错误和异常

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
python学习笔记8--- 错误和异常

第10章 错误和异常

10.1 错误和异常的介绍

Python是一门解释型语言,只有在程序运行后才会执行语法检查。所以,只有在运行或测试程序时,才会真正知道该程序能不能正常运行。

Python有两种错误很容易辨认:语法错误和异常。

10.1.1 语法错误

程序解析时遇到的语法错误。

""" 演示语法错误 """print(

以上代码有语法错误:

File "D:\shangguigu\PythonProject\chapter10\p01_syntax_error.py", line 4 print( ^ SyntaxError(语法错误): '(' was never closed

10.1.2 异常

Python 程序的语法是正确的,在运行它的时候,也有可能发生错误。运行期检测到的错误被称为异常。

大多数的异常都不会被程序处理,都以错误信息的形式打印出来,错误信息的前面部分显示了异常发生的上下文,并以调用栈的形式显示具体信息。

""" 演示异常 """result=3/0print(result)

以上代码语法正确,但是运行报错:

Traceback(most recent call last):File"D:\shangguigu\PythonProject\chapter10\p02_exception_error.py",line4,in<module>result=3/0~~^~~ZeroDivisionError:division by zero(除数为0的异常)

10.2 异常处理

对异常进行处理并不是将错误规避了,而是当程序运行的时候,出现错误的时候提供解决方案,不终止程序,可以让程序继续执行。

10.2.1 try except

可以使用 try except 语句来捕获异常并处理。

语法格式:

try:可能发生异常的代码except异常类型1:异常处理的代码except异常类型2:异常处理的代码except(异常类型3,异常类型4,异常类型5):异常处理的代码except:异常处理的代码
  • 如果try没有发生异常,程序会忽略except中的代码,继续向下执行。
  • 如果try发生了异常,会忽略try中剩余代码,根据异常类型匹配到相应的 except 并执行其中的代码。
  • 如果try发生了异常,且异常类型无法和任何except匹配,也没有独立的except:分支,异常将向外传递。
  • 一个except可以同时处理多个异常,将这些异常放在一个元组中。
  • 最后一个 except 可以忽略异常类型,它将被作为通配符使用。

演示案例

""" 异常处理 """whileTrue:try:a=int(input("请输入被除数:"))b=int(input("请输入除数:"))print(f"{a}/{b}={a/b}")breakexcept(ValueError,TypeError):print("必须输入整数")exceptZeroDivisionError:print("除数不能为0")except:print("未知错误")print("End")

10.2.2 获取异常描述信息

语法格式:

try:可能发生异常的代码except异常类型1as变量名1:异常处理的代码except异常类型2as变量名2:异常处理的代码except(异常类型3,异常类型4,异常类型5)as变量名3:异常处理的代码except:异常处理的代码
  • except的异常类型后面加as 变量名,当发生这个类型的异常时,异常对象就会被赋值给这个变量。单独的except后面不能加变量名。
  • 打印traceback.print_exc()可以打印异常的详细信息

示例代码:

""" 异常处理 """importtracebackwhileTrue:try:a=int(input("请输入第一个数字:"))b=int(input("请输入第二个数字:"))print(f"{a}/{b}={a/b}")breakexceptValueErrorase:# traceback.print_exc() # 打印异常的详细信息print("输入错误,请重新输入。异常信息是:",e)exceptZeroDivisionErrorase:print("除数不能为0。异常信息是:",e)except:print("未知错误")print("End")

10.2.3 else

可选地将else放在所有except之后。如果try中代码没有发生异常,将执行 else 中的代码。

语法格式:

try:可能发生异常的代码except异常类型1as变量名1:#【as 变量名1】表示可选的异常处理的代码
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/1 7:15:39

中台战略分析模型:从业务痛点到技术落地的四步构建法

1. 从“中台热”到“中台痛”&#xff1a;为什么你需要一个战略分析模型&#xff1f;这几年&#xff0c;“中台”这个词在技术圈和业务圈都火得一塌糊涂。从大厂的开源物联中台&#xff0c;到各种SaaS零售业务中台的架构方案&#xff0c;似乎不提中台就落伍了。但现实情况是&am…

作者头像 李华
网站建设 2026/8/31 0:47:46

【计算机毕业设计单片机案例】面向老年群体基于 STM32 的智能服药提醒装置设计 基于 STM32 红外光电检测智能药盒控制系统设计(012905)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于嵌入式单片机&#xff0c;Java、小程序技术领域和毕业项目实战 ✌️…

作者头像 李华
网站建设 2026/8/31 0:49:03

V-RAE:用视觉基础模型表征突破视频生成的一致性与语义瓶颈

视频生成做到今天&#xff0c;视觉质量已经很高了&#xff0c;但真正困住项目落地的往往是另外几个问题&#xff1a;生成的长视频人物一会儿变脸、物体一会儿变形、语义前后对不上&#xff1b;训练时模型在像素空间里拼命拟合纹理&#xff0c;却完全没有“这个东西是什么”的概…

作者头像 李华
网站建设 2026/9/1 11:11:00

VSCode 1.65.0 ia32 zip包解析:从版本号到环境配置与排错

简介&#xff1a;在开发工具链中&#xff0c;Visual Studio Code 作为一款轻量级跨平台编辑器&#xff0c;始终是众多程序员的首选。无论你用的是 64 位系统还是仍受限于 32 位旧设备&#xff0c;理解版本号与架构后缀的差异都至关重要。本文从 VSCode-win32-ia32-1.65.0 这个经…

作者头像 李华
网站建设 2026/9/2 7:57:52

Ubuntu 20.04下基于Intel编译器与MKL的ALAMODE编译指南

最近在帮一个计算材料方向的团队搭建声子计算环境时&#xff0c;发现很多人的卡点并不是 ALAMODE 本身的用法&#xff0c;而是编译安装阶段&#xff1a;Linux 环境不熟、LAPACK/BLAS 库链接不上、Intel 编译器环境没配好&#xff0c;最终卡在 configure 或 make 阶段。尤其是“…

作者头像 李华
网站建设 2026/9/1 9:38:55

GT系列8:GT基础架构(八)

 RX初始化与复位&#xff1a; RX复位比TX复杂&#xff0c;支持顺序模式和单次模式&#xff0c; 其中复位状态流程如下图所示&#xff1a;RX部分的复位接口如下表所示&#xff0c;包括各个复位子模块的状态接口和控制接口&#xff1a;下图为初始化配置完成后RX总复位逻辑&…

作者头像 李华