Python的异常处理机制

Python的异常处理机制

异常处理是编程中的一个重要概念,用于处理程序运行过程中出现的错误或异常情况。Python提供了强大的异常处理机制,使得程序能够优雅地处理错误,而不是直接崩溃。

1. 异常处理的基本概念

在Python中,异常处理主要通过tryexceptelsefinally这几个关键字来实现。

  • try: 包含可能引发异常的代码块。
  • except: 当try块中出现异常时执行的代码块,可以捕获并处理特定类型的异常。
  • else: 如果try块中没有出现异常,执行else块中的代码。
  • finally: 无论是否发生异常,finally块中的代码都会执行,通常用于清理资源(例如关闭文件或网络连接)。
2. 异常处理的基本结构
try:# 可能引发异常的代码x = 1 / 0
except ZeroDivisionError:# 捕获并处理特定异常print("除零错误")
else:# 如果没有异常,执行这部分代码print("没有错误发生")
finally:# 总是执行这部分代码print("无论如何都会执行")
3. 处理场景

异常处理机制主要用于以下场景:

  1. 用户输入: 当用户输入非法数据时,程序能够捕获并提示用户重新输入。
  2. 文件操作: 在打开、读取或写入文件时,处理文件不存在或权限不足等错误。
  3. 网络操作: 在进行网络请求时,处理网络连接失败、超时等错误。
  4. 其他意外情况: 如除零错误、类型错误等。
4. 注意点
  1. 不要滥用异常处理: 异常处理应该用于真正的异常情况,不要用它来控制正常的程序流程。
  2. 捕获特定异常: 尽量捕获特定类型的异常,而不是使用通用的Exception类,以免掩盖其他错误。
  3. 清理资源: 使用finally块来清理资源,确保无论是否发生异常,资源都能得到正确释放。
5. 一步一步学习
  1. 理解基本概念: 学习tryexceptelsefinally的用法。
  2. 实践简单示例: 编写简单的示例代码,练习捕获和处理常见的异常。
  3. 深入理解异常链: 学习如何捕获多个异常以及如何使用异常链(raise from)。
  4. 应用到实际项目: 在实际项目中使用异常处理机制,处理文件操作、网络请求等场景中的异常。
6. 具体示例

示例1: 用户输入

try:num = int(input("请输入一个整数: "))print(f"你输入的数字是: {num}")
except ValueError:print("输入的不是一个有效的整数")

示例2: 文件操作

try:with open('example.txt', 'r') as file:content = file.read()print(content)
except FileNotFoundError:print("文件未找到")
except PermissionError:print("没有权限读取文件")
finally:print("文件操作完成")

示例3: 网络请求

import requeststry:response = requests.get('https://example.com')response.raise_for_status()print(response.text)
except requests.exceptions.HTTPError as http_err:print(f"HTTP错误: {http_err}")
except requests.exceptions.ConnectionError as conn_err:print(f"连接错误: {conn_err}")
except requests.exceptions.Timeout as timeout_err:print(f"请求超时: {timeout_err}")
except requests.exceptions.RequestException as req_err:print(f"请求异常: {req_err}")
finally:print("网络请求完成")

通过以上示例和步骤,你可以逐步掌握Python的异常处理机制,并应用到实际编程中。

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

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

相关文章

【PYTHON】多进程运行示例含共享数据

运行结果 Python多进程调用示例 import multiprocessing import time import os import sys# 注册多个函数用于不同进程分别调用 def testcase0():time.sleep(1)return "case0_"get_time()def testcase1(timestamp):return "case1_"timestampdef testcase…

Python | TypeError: ‘float’ object is not subscriptable

Python | TypeError: ‘float’ object is not subscriptable 在Python编程中,遇到“TypeError: ‘float’ object is not subscriptable”这一错误通常意味着你尝试对浮点数(float)使用了下标访问(如数组或列表那样的访问方式&a…

数电票如何查验、管理?C#发票查验接口集成

数字化时代,一切事务都在逐渐向数字化转型,发票也不例外。现如今,数电票俨然成为了商业交易的新常态,不仅环保高效,还有助于简化财务管理流程。但任何事务都具有双面性,如何对数电票的真实性和有效性进行查…

Mindspore框架循环神经网络RNN模型实现情感分类|(四)损失函数与优化器

Mindspore框架循环神经网络RNN模型实现情感分类 Mindspore框架循环神经网络RNN模型实现情感分类|(一)IMDB影评数据集准备 Mindspore框架循环神经网络RNN模型实现情感分类|(二)预训练词向量 Mindspore框架循环神经网络RNN模型实现…

探索 Blockly:自定义积木实例

3.实例 3.1.基础块 无输入 , 无输出 3.1.1.json var textOneJson {"type": "sql_test_text_one","message0": " one ","colour": 30,"tooltip": 无输入 , 无输出 };javascriptGenerator.forBlock[sql_test_te…

数据结构:二叉树(堆)的顺序存储

文章目录 1. 树1.1 树的概念和结构1.2 树的相关术语 2. 二叉树2.1 二叉树的概念和结构2.2 二叉树的特点2.3 特殊的二叉树2.3.1 满二叉树2.3.2 完全二叉树 2.4 二叉树的性质 3. 实现顺序结构二叉树3.1 堆的概念和结构3.2 初始化3.3 销毁3.4 插入数据3.5 向上调整算法3.6 删除数据…

【二叉树】—— 算法题

一、单值二叉树 题目要求:判断二叉树是不是单值二叉树(就是所以节点的值都相等)。 思路: 利用二叉树的递归思想,判断每一个节点值与其左右子节点的值是否相等,如果遇到空节点,就返回true&#…

JavaScript的常见难点(一)

1. 异步编程 如何使用:使用回调函数、Promise、async/await 来处理异步操作。面试问题: 解释什么是 Promise,如何使用它。async 和 await 是什么?它们如何简化异步代码?面试问题的答案: Promise&#xff1…

linux异步操作接口

aiocb数据结构 需要头文件 #include <aiocb.h>结构定义为 struct aiocb {/* The order of these fields is implementation-dependent */int aio_fildes; /* File descriptor */off_t aio_offset; /* File offset */volatile void *ai…

醒醒,别睡了...讲《数据分析pandas库》了—/—<7>

一、 1、处理缺失值 1.1 认识缺失值 系统默认的缺失值 None 和 np. nan datapd.Series([3,4,np.nan,1,5,None]) dfpd.DataFrame([[1,2,None],[4,np.nan,6],[5,6,7]]) 1.2 缺失值查看 直接调用info() 方法就会返回每一列的缺失情况。 dfpd.DataFrame([[1,2,np.nan],[4,np.n…

后端面试题日常练-day12 【Java基础】

题目 希望这些选择题能够帮助您进行后端面试的准备&#xff0c;答案在文末 Java中的重载&#xff08;Overload&#xff09;和重写&#xff08;Override&#xff09;有何区别&#xff1f; a) 重载是指在同一个类中可以有多个方法同名&#xff0c;但参数列表不同&#xff1b;重写…

SpringMVC异步处理的 5 种方式

SpringMVC异步处理的 5 种方式 Spring MVC 处理异步请求的主要原因是提高 Web 应用的性能和可扩展性&#xff0c;特别是在处理长时间运行的任务或需要等待外部资源&#xff08;如数据库查询、远程服务调用等&#xff09;时。以下是一些具体原因和优势&#xff1a; 优势 1. 资…

迁移FastDFS

迁移FastDFS 停止旧集群服务 [rootnode01 fastdfs]# systemctl stop fdfs_tracker [rootnode01 fastdfs]# systemctl stop fdfs_storage [rootnode01 fastdfs]# systemctl stop nginx把旧集群的配置文件复制到新的集群上&#xff0c;并修改对应的IP地址&#xff0c;路径可以保…

Activity A跳转Activity B,再按返回键,生命周期执行的顺序

开A A:onCreate ----> A:onStart ----> A:OnResume 此时startActivity B A.onPause &#xff0d;> B.onCreate &#xff0d;> B.onStart&#xff0d;> B.onResume---->A.onStop 也就是B可见了 A才会stop 这时候back按键&#xff1a; B.onPause —>A。reS…

在Linux中,MySQL备份与恢复

随着自动化办公与电子商务的不断发展&#xff0c;企业对于信息系统的依赖性越来越高&#xff0c;而数据库在信息系统中担任着非常重要的角色。尤其一些对数据可靠性要求非常高的行业,如银行、证券、电信等&#xff0c;如果发生意外宕机或数据丢失&#xff0c;其损失是非常严重的…

[ACTF2020 新生赛]Upload1

打开靶机&#xff0c;发现什么都没有 查看源码发现有个表单&#xff0c;不过高度为0&#xff0c;所以被隐藏了&#xff0c;我们直接找打css文件&#xff0c;清空&#xff08;也可以设置原始高度&#xff09; 然后提交木马脚本&#xff0c;直接提交PHP不通过 修改为phtml&#x…

Java | Leetcode Java题解之第299题猜数字游戏

题目&#xff1a; 题解&#xff1a; class Solution {public String getHint(String secret, String guess) {int bulls 0;int[] cntS new int[10];int[] cntG new int[10];for (int i 0; i < secret.length(); i) {if (secret.charAt(i) guess.charAt(i)) {bulls;} e…

pandoc转换md到pdf遇到的问题

1. pandoc必须要用sudo才能运行这是我没有想到的 sudo pandoc ./results/output.md --pdf-enginexelatex -o ./results/output.pdf 2.pdflatex安装失败&#xff0c;只能安装wkhtmltopdf sudo apt-get install wkhtmltopdf sudo pandoc ./results/output.md --pdf-enginewk…

初学Mybatis之多对一查询 association 和一对多查询 collection

XML 映射器 多对一&#xff1a;关联&#xff08;association&#xff09; 一对多&#xff1a;集合&#xff08;collection&#xff09; mysql 创建教师、学生表&#xff0c;插入数据 create table teacher(id int(10) primary key,name varchar(30) default null ) engineI…

OpenSource - Ip2region 离线IP地址定位库和IP定位数据管理框架

文章目录 Ip2region 是什么Ip2region 特性1、IP 数据管理框架2、数据去重和压缩3、极速查询响应 xdb 数据查询xdb 数据生成xdb 数据更新手动编辑更新检测自动更新 相关备注1、并发查询必读2、技术资源分享 Release Ip2region 是什么 https://github.com/lionsoul2014/ip2regio…