python 之异常处理结构

文章目录

    • 常见的异常处理表现形式
      • 1. `SyntaxError`
      • 2. `NameError`
      • 3. `TypeError`
      • 4. `IndexError`
      • 5. `KeyError`
      • 6. `ZeroDivisionError`
      • 7. `FileNotFoundError`
      • try……except …… 结构
      • 1. `try` 块
      • 2. `except` 块
      • 示例:
      • 多个`except`块
      • try……except ……else 结构
      • 结构说明:
      • 示例:
      • try ……except ……finally 结构
      • 结构说明:
      • 示例:

在这里插入图片描述

常见的异常处理表现形式

在 Python 中,常见的异常类型会因为不同的错误情况而触发。以下是一些常见的异常及其表现形式:

1. SyntaxError

  • 表现形式:通常是由于语法错误导致的,Python 解释器会在发现错误的位置产生异常。
  • 示例:缺少冒号、拼写错误或语法错误等。
if True
    print("Hello, World!")

2. NameError

  • 表现形式:尝试访问不存在的变量或函数时引发。
  • 示例:拼写错误或未定义变量。
print(unknown_variable)

3. TypeError

  • 表现形式:当对一个类型无法执行所需操作时引发。
  • 示例:将不同类型的对象进行错误的操作。
a = "10"
b = 5
result = a + b  # 无法将字符串和整数相加

4. IndexError

  • 表现形式:尝试访问不存在的索引时引发。
  • 示例:访问列表、元组或字符串中不存在的索引位置。
my_list = [1, 2, 3]
print(my_list[5])  # 访问不存在的索引位置

5. KeyError

  • 表现形式:尝试访问字典中不存在的键时引发。
  • 示例:访问字典中不存在的键。
my_dict = {'a': 1, 'b': 2}
print(my_dict['c'])  # 访问不存在的键

6. ZeroDivisionError

  • 表现形式:尝试除以零时引发。
  • 示例:除数为零的情况。
result = 10 / 0

7. FileNotFoundError

  • 表现形式:当尝试打开一个不存在的文件时引发。
  • 示例:尝试打开不存在的文件路径。
with open('nonexistent_file.txt', 'r') as file:
    content = file.read()

这些异常类型是 Python 中常见的一部分,了解它们可以帮助你更好地调试和处理代码中可能出现的错误。

try……except …… 结构

try-except 结构是Python中用于异常处理的主要机制。它允许你编写代码来处理可能出现的异常情况,避免程序终止执行。下面是try-except结构的基本形式:

try:
    # 尝试执行的代码块
    # 可能会引发异常的代码
    pass
except SomeException as e:
    # 处理特定类型的异常
    # e是异常对象,包含异常信息
    pass

1. try

  • try 块是用来包裹可能会引发异常的代码。在try块中编写可能引发异常的代码,如文件操作、数学运算、函数调用等。

2. except

  • except 块用于捕获和处理特定类型的异常。当try块中的代码引发指定类型的异常时,Python会跳转到相应的except块来处理异常。
  • as 关键字将异常对象赋值给指定的变量,通常习惯用e表示异常对象。你可以使用这个变量来获取关于异常的信息,比如异常类型、错误消息等。

示例:

try:
    result = 10 / 0  # 尝试除以零
except ZeroDivisionError as e:
    print("除零错误发生:", e)

在这个例子中,try块中的除法操作会引发ZeroDivisionError异常。except块会捕获这个异常,并打印相关信息。

多个except

你也可以使用多个except块来处理不同类型的异常:

try:
    # 一些可能会引发异常的代码
    pass
except ValueError as e:
    # 处理特定类型的异常
    pass
except (TypeError, ZeroDivisionError) as e:
    # 处理多个异常类型
    pass
except Exception as e:
    # 处理所有异常
    pass

多个except块按顺序匹配异常类型,执行第一个能匹配的块,其他的块不会执行。

try-except结构允许在程序中处理潜在的错误,使程序更加健壮和稳定。

try……except ……else 结构

try-except-else 结构是 Python 中用于异常处理的一种机制,它允许在 try 块中捕获异常,然后在没有发生异常时执行一些代码。下面是该结构的基本形式:

try:
    # 尝试执行的代码块
    # 可能会引发异常的代码
    pass
except SomeException as e:
    # 处理特定类型的异常
    pass
else:
    # 在没有异常时执行的代码块
    pass

结构说明:

  • try 块中包含可能引发异常的代码。
  • except 块用于捕获并处理特定类型的异常。
  • else 块中的代码在没有异常发生时执行。

示例:

try:
    result = 10 / 2  # 尝试除法运算
except ZeroDivisionError as e:
    print("除零错误发生:", e)
else:
    print("没有发生异常,执行除法操作成功")

在这个例子中,由于除数不是零,所以没有引发ZeroDivisionError异常。因此,else块中的代码将被执行,打印"没有发生异常"的消息。

else块通常用于处理除非引发异常之外的其他情况。如果try块中的代码没有引发异常,那么else块中的代码将被执行。

这种结构可以让你将异常处理的代码和正常逻辑的代码分开,提高代码的可读性,并且只有在没有异常发生时才执行特定的操作。

try ……except ……finally 结构

try-except-finally 结构是 Python 中用于异常处理的一种机制,它允许你在出现异常或没有异常时都执行一些必要的清理操作。下面是该结构的基本形式:

try:
    # 尝试执行的代码块
    # 可能会引发异常的代码
    pass
except SomeException as e:
    # 处理特定类型的异常
    pass
finally:
    # 无论是否发生异常,都会执行的代码块
    pass

结构说明:

  • try 块中包含可能引发异常的代码。
  • except 块用于捕获并处理特定类型的异常。
  • finally 块中的代码无论是否发生异常都会执行。

示例:

try:
    file = open("example.txt", "r")  # 尝试打开文件
    content = file.read()
except FileNotFoundError as e:
    print("文件未找到:", e)
finally:
    file.close()  # 无论是否发生异常,关闭文件

在这个例子中,try 块尝试打开一个文件,如果文件未找到,则会引发 FileNotFoundError 异常。except 块用于捕获这个异常,finally 块中的代码则无论是否发生异常,都会执行文件关闭操作。

finally 块通常用于清理资源,例如关闭文件、释放网络连接、释放数据库连接等。无论是否发生异常,finally 块中的代码都会被执行。这确保了资源的正确释放,即使出现了异常情况。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/119707.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

AVS3:双向梯度修正BGC

双向梯度修正(Bi-directional Gradient Correction,BGC)是利用双向参考块间的差值对预测值进行修正的技术。 BGC仅用于双向预测CU,设两个方向得到的单向预测值分别为pred0和pred1,修正前的双向预测值为predBI&#xf…

Elasticsearch:搜索架构

Elasticsearch 全文检索的复杂性 为了理解为什么全文搜索是一个很难解决的问题,让我们想一个例子。 假设你正在托管一个博客发布网站,其中包含数亿甚至数十亿的博客文章,每个博客文章包含数百个单词,类似于 CSDN。 执行全文搜索…

win版redis详细安装教程

一、下载 github下载地址 https://github.com/MicrosoftArchive/redis/releases 可选择:下载msi包或zip压缩包 这里我选择的是zip压缩包,直接通过cmd命令窗口操作即可。 二、安装步骤 1、解压Redis压缩包 选中压缩包,右键选择解压&#…

【计算机网络】数据链路层-MAC和ARP协议

文章目录 1. 认识以太网2. MAC协议MAC帧的格式MAC地址和IP地址的区别MTU 3. 局域网通信原理碰撞检测和避免 4. ARP协议ARP数据报的格式ARP缓存 1. 认识以太网 网络层解决的是跨网络点到点传输的问题,数据链路层解决的是同一网络中的通信。 数据链路层负责在同一局域…

ARMday01(计算机理论、ARM理论)

计算机理论 计算机组成 输入设备、输出设备、运算器、控制器、存储器 1.输入设备:将编写好的软件代码以及相关的数据输送到计算机中,转换成计算机能够识别、处理和存储的数据形式 键盘、鼠标、手柄、扫描仪、 2.输出设备:将计算机处理好的数…

jacoco和sonar

目录 jacoco 引入依赖 构建配置修改 单元测试 生成报告 查看报告 报告说明 1. Instructions 2. Branches 3. Cyclomatic Complexity 4. Lines 5. Methods 6. Classes sonar7.7 基础环境 需要下载软件 解压文件并配置 运行启动 jacoco 引入依赖 <dep…

系列一、Spring + SpringMVC + MyBatis整合

一、概述 整合 Spring、SpringMVC、MyBatis。 二、整合步骤 2.1、pom <dependencies><!-- 普通maven项目中使用Sl4j注解 --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1…

MFC 基础篇(一)

目录 一.SDK编程 二.为什么要学MFC&#xff1f; 三.MFC能做什么&#xff1f; 四.MFC开发环境搭建 五.MFC项目创建 六.消息映射机制 一.SDK编程 Application Programming Interface 应用程序编程接口。 Software Development Kit 软件开发工具包&#xff0c;一般会包括A…

自动驾驶高效预训练--降低落地成本的新思路(AD-PT)

自动驾驶高效预训练--降低落地成本的新思路 1. 之前的方法2. 主要工作——面向自动驾驶的点云预训练2.1. 数据准备 出发点&#xff1a;通过预训练的方式&#xff0c;可以利用大量无标注数据进一步提升3D检测 https://arxiv.org/pdf/2306.00612.pdf 1. 之前的方法 1.基于对比学…

图像标注工具lableImg安装出错怎么办?

我们要训练自己的图像识别模型&#xff0c;首先要进行图像的标注。labelimg就是一款可视化的图像标注工具。它是用Python编写的&#xff0c;通过Qt实现其图形界面&#xff0c;尽管它只支持矩形框标注&#xff0c;但因跨平台&#xff0c;支持Linux、Mac OS、Windows&#xff0c;…

Pycharm加载项目时异常,看不到自己的项目文件

最近看到一个朋友问&#xff0c;他把项目导入pycharm为什么项目里的包不在项目里显示&#xff0c;只在projects file里显示&#xff1f;问题截图如下&#xff1a; Project里看不到自己的项目文件 只能在Project Files里看到自己的项目文件 问题解答 我也是偶然发现的这个方案…

思维模型 首因效应

本系列文章 主要是 分享 思维模型&#xff0c;涉及各个领域&#xff0c;重在提升认知。先入为主&#xff0c;一见钟情。 1 首因效应的应用 1.1 面试中的首因效应 小李是一名应届毕业生&#xff0c;他准备参加一家知名互联网公司的面试。在面试前&#xff0c;他做了充分的准备…

SQL注入漏洞及五大手法

SQL注入漏洞 文章目录 SQL注入漏洞万能用户名 SQL注入分类两大基本类型五大手法提交参数方式注入点的位置 注入点判断SQL注入的危害sql漏洞挖掘Mysql库中的注释 SQL注入基本手法联合查询条件 报错注入group byextractvalueupdataxml 布尔盲注延时注入 案例获取cms网站后台管理员…

云尘 命令执行系列

第一题 system <?php include "flag.php";if (isset($_POST[cmd])) {system($_POST[cmd]); }show_source(__FILE__);代码如上 system($_POST[cmd]); POST请求发送一个名为 cmd 的参数&#xff0c;然后将该参数的值传递给系统命令执行函数 system()&#xff0c…

vue + axios + mock

参考来源&#xff1a;Vue mock.js模拟数据实现首页导航与左侧菜单功能_vue.js_AB教程网 记录步骤&#xff1a;在参考资料来源添加axios步骤 1、安装mock依赖 npm install mock -D //只在开发环境使用 下载完成后&#xff0c;项目文件package.json中的devDependencies就会加…

支持内录系统声音的Mac录屏软件Omi Recorder

Screen Recorder by Omi是一款功能强大的屏幕录制应用程序。它可用于在Windows和Mac计算机上捕获屏幕&#xff0c;以便进行演示、教程、游戏录制、视频编辑等各种用途。 以下是该应用程序的一些主要特点&#xff1a; 支持高清录制&#xff1a;Omi Screen Recorder可以以高达6…

Appium 结合 TestNG 并行执行测试

Appium 测试框架可以让我们使用不同的编程语言&#xff08;Java、Python、Ruby、JavaScript&#xff09;测试不同移动端平台的应用&#xff08;Android、iOS&#xff09;&#xff0c;目前也是最火的移动端测试框架。这篇文章会带着大家学习到如何在不同设备中并行执行测试。 并…

没网络也能安装.Net 3.5!如何脱机安装.NET Framework 3.5

.NET框架是由微软制定的一个软件框架。它有助于在Windows上运行控制台、Web或移动应用程序。此有用的工具适用于Windows设备。 如何脱机安装.NET Framework 3.5 如果你拥有Windows 10、8、8.1或7,有时第三方软件可能会导致问题。你可能会在图片中看到这样的问题。 看这张照片…

QT 实现两款自定义的温度计/湿度控件

文章目录 0 引入1、带有标尺的温度/湿度计控件1.头文件2.核心代码 2、竖起来的温度/湿度计控件1.头文件2.实现 3、引用 0 引入 QT原生控件没有实现如仪表盘或者温度计的控件&#xff0c;只好自己实现&#xff0c;文章代码部分参考引用的文章。直接上图 图一 带有标尺的温度计…

快速实现一个企业级域名 SSL 证书有效期监控巡检系统

Why 现在对于企业来说&#xff0c;HTTPS 已经不是可选项&#xff0c;已经成为一个必选项。HTTPS 协议采用 SSL 协议&#xff0c;采用公开密钥的技术&#xff0c;提供了一套 TCP/IP 传输层数据加密的机制。SSL 证书是一种遵守 SSL 协议的服务器数字证书&#xff0c;一般是由权威…