python 之异常处理结构

news2024/11/26 23:35:22

文章目录

    • 常见的异常处理表现形式
      • 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 块中的代码都会被执行。这确保了资源的正确释放,即使出现了异常情况。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

注册电气工程师(供配电)专业考试大纲纯干货分享

1.法律法规与工程管理 1.1熟悉我国工程勘察设计中必须执行法律、法规的基本要求; 1.2熟悉了解工程勘察设计中必须执行建设标准强制性条文的概念; 1.3了解我国工程项目管理的基本概念和项目建设法人、项目经理、项目招标与投标、项目承包与分包等基本要素…

MySQL 数据目录和 InnoDB 表空间补充知识:详细结构

1. 数据目录 在Ubuntu下,MySQL的数据目录为/var/lib/mysql 1.1 数据库在文件系统中的表示 (1)创建数据库时,会在数据目录下创建一个与数据库名同名的子目录。(除了information_schema这个系统数据外) &…

AVS3:双向梯度修正BGC

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

看完这篇,医学小白也能轻松玩转文献查阅

对医学生而言,文献查询是写论文必不可少的一环。然而这实在是一件重要但又心累的事情。你是否每次查找文献,都感觉自己在进行无意义的重复劳动;一天下来全在搜索、下载、保存;搜索引擎给出的结果太多太杂,或者找不到全…

linux C++实现线程绑定CPU

前言 嵌入式里面我们会使用到多核的cpu,随着产品芯片性能提升,我们也会有很多功能,以及很多进程产生运行,这个时候我们在任务调度调优的时候,把一些进程绑定到固定cpu运行,下面就来分享一下cpu绑定运行的过…

ubunt18.04.4 安装petalinux2022.2

安装Petalinux需要许多依赖: 安装下面的工具: sudo apt-get install net-tools sudo apt-get install xterm sudo apt-get install autoconf sudo apt-get install libtool sudo apt-get install texinfo sudo apt-get install zlib1g-dev sudo apt-get…

Android Studio报错:connect refused

参考链接: https://blog.csdn.net/qq_43213783/article/details/113936012 参考文章中说报错主要是由于代理导致的,在文件->设置->外观与行为->系统设置->HTTP代理。 方法一: 查看打开代理(前提是代理可以通网&#x…

混沌系统在图像加密中的应用(小波混沌神经网络)

混沌系统在图像加密中的应用(小波混沌神经网络) 前言一、小波混沌神经网络模型二、拓展三、python代码 前言 小波混沌神经网络是一种神经网络模型,结合了小波变换和混沌理论,用于信号处理、分类和预测。该模型基于多层前向神经网…

经典OJ题:单链表相交

目录 题目: 链表相交🍌的概念: 单链表相交🍌主要的问题: 思路的分析🍌: 问题的回答: 如何判断相交🍌: 如何寻找交点🍌: 代码演…

独立云厂商市场份额第一 | 云轴科技ZStack位居IDC云系统软件市场报告第一梯队

近日,全球IT市场研究和咨询公司IDC发布《中国云系统软件市场跟踪报告2023H1》报告,报告显示2023年上半年中国云系统软件整体市场规模达到24.08亿元,同比增长16.4%。其中,云轴科技ZStack 作为产品化的云基础软件提供商,…

Leetcode-206 反转链表

迭代法:将指针方向依次改变,定义两个指针pre和cur /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val val; }* ListNode(int val, Lis…

如何找出最优的【SVC】核函数和参数值—以乳腺癌数据集为例

在实际的工作中,有的时候我们不知道数据特征,也不知道我们的数据是线性还是非线性。因此我们需要对数据一步步进行摸索,来找到最优的核函数和参数值。接下来我们以sklearn乳腺癌数据集为例。 先来导入相应的模块: from sklearn.d…

solidworks安装时,出现这个错误:无法获得下列许可SOLIDWORKS Standard.无效的(不一致的)使用许可号码。(-8,544,0)

问题描述:在安装SolidWorks2023时,按照软件管家中的步骤,但是在打开SolidWorks2023桌面上的快捷键时,出现了这个错误: 无法获得下列许可SOLIDWORKS Standard.无效的(不一致的)使用许可号码。(-…

一文1600字使用Postman搞定各种接口token实战(建议收藏)

现在许多项目都使用jwt来实现用户登录和数据权限,校验过用户的用户名和密码后,会向用户响应一段经过加密的token,在这段token中可能储存了数据权限等,在后期的访问中,需要携带这段token,后台解析这段token才…

‘vue’不是内部或外部命令,也不是可运行的程序或批处理文件

vue不是内部或者外部命令 今天打算重新创建一个vue项目,结果一直创建不了, 于是我就npm uninstall -g vue/cli怀疑是cli版本的问题,结果删了过后想要重新安装变一直卡在sill idealTree buildDeps 然后就直接vue不是内部或外部命令了 然后我…

【uniapp小程序下载】调用uni.uploadfile方法在调试工具里是没有问题的,但是线上版本和体验版就调用不成功,真机调试也没问题

把你的下载地址前缀添加到合法域名就解决了 在调试工具里成功了是因为勾选了下面这项 下面是我的下载并打开函数 methods: {// 下载downloadFileFn(data) {if (this.detailsObj.currentUserBuy) {uni.downloadFile({// data是路径url: https:// data,success(res) {//保存到本…

2019 ICPC 银川题解(A,H,L)

赛时没发挥好6题金尾(rank38),剩下很多能写的题,其中四个dp,傻眼ing The 2019 ICPC Asia Yinchuan Regional Contest A Girls Band Party(背包) 有点迷惑的题,当时看只要 5 5 5 张…

400 页共计 800 道软件测试面试真题汇总,2023年吐血整理

800 道软件测试面试真题,高清打印版打包带走,横扫软件测试面试高频问题,涵盖测试理论、Linux、MySQL、Web 测试、接口测试、App 测试、Python、Selenium、性能测试、LordRunner、计算机网络、数据结构与算法、逻辑思维、人力资源等模块面试题…

python对Windows如何进行关机/重启?

用CMD命令进行关机/重启步骤: 1.winR,换出输入框 2.在输入框输入命令,如关机:shutdown -s -t 20,该命令是20秒后关机。 命令说明 -s 关机 -r 重启 -t 时间,后面是数字是你要设置的秒数 -a 取消命令&…

lv11 嵌入式开发 计算机硬件基础 1

目录 1 导学 1.1回顾及导学 1.2 嵌入式系统分层 1.3 linux底层开发 2 ARM体系结构与接口技术课程导学 3 计算机基础 3.1 计算机的进制 3.2 计算机组成 3.3 总线 4 多级存储结构与地址空间 4.1 多级存储概念 4.2 地址空间 5 CPU工作原理 6 练习 1 导学 1.1回顾及导…