Python异常捕获和处理方式

目录

一、引言

二、异常捕获和处理的基本方式

1、try-except语句块

2、raise语句

3、assert语句

三、高级异常捕获和处理技术

1、多个except块

2、finally块

3、使用多个try-except块

4、使用with语句

5、使用多个except块捕获同一种异常

四、总结


一、引言

在Python中,异常是指程序运行过程中发生的意外情况,例如除数为零、文件未找到等。这些异常可能会导致程序崩溃或者产生不可预知的结果。为了提高程序的健壮性和可维护性,我们需要对异常进行处理,确保程序在遇到异常时能够正确地响应并恢复执行。

二、异常捕获和处理的基本方式

1、try-except语句块

try-except语句块是Python中处理异常的主要方式。当程序运行到try块时,会尝试执行其中的代码,如果发生异常,则会立即跳转到except块进行处理。在except块中,我们可以根据不同的异常类型编写不同的处理代码。例如:

try:  # 尝试执行可能引发异常的代码  result = 1 / 0  
except ZeroDivisionError:  # 处理除数为零的异常  print("除数不能为零!")

2、raise语句

raise语句用于手动抛出异常。当我们需要在特定情况下触发异常时,可以使用raise语句来抛出异常。例如:

def divide(a, b):  if b == 0:  raise ZeroDivisionError("除数不能为零!")  return a / b

3、assert语句

assert语句用于在代码中添加断言,检查代码中的条件是否满足。如果条件不满足,则会抛出AssertionError异常。例如:

def square(n):  assert n > 0, "n必须大于零"  return n ** 2

三、高级异常捕获和处理技术

1、多个except块

我们可以使用多个except块来捕获不同类型的异常,并在不同的块中执行不同的处理代码。例如:

try:  # 尝试执行可能引发异常的代码  result = int("not a number")  
except ValueError:  # 处理数值转换异常  print("无效的数值")  
except TypeError:  # 处理类型错误异常  print("类型错误")

2、finally块

finally块是try-except语句块的可选部分。无论try块中是否发生异常,finally块中的代码都会被执行。通常用于资源的清理和释放。例如:

try:  # 尝试执行可能引发异常的代码  result = int("not a number")  
except ValueError:  # 处理数值转换异常  print("无效的数值")  
finally:  # 清理资源  print("完成清理")

3、使用多个try-except块

当需要捕获和处理多个异常时,可以使用多个try-except块。每个try块尝试执行一段代码,如果发生异常,则跳转到相应的except块进行处理。例如:

try:  # 尝试执行可能引发异常的代码1  result = int("not a number")  
except ValueError:  # 处理数值转换异常  print("无效的数值1")  try:  # 尝试执行可能引发异常的代码2  result = 1 / 0  
except ZeroDivisionError:  # 处理除数为零的异常  print("除数不能为零2")

4、使用with语句

with语句是一种上下文管理器,可以用于自动管理资源,并在退出上下文时自动清理资源。在with语句中,可以捕获和处理异常。例如:

with open("file.txt", "r") as f:  try:  # 尝试执行可能引发异常的代码  content = f.read()  except FileNotFoundError:  # 处理文件未找到的异常  print("文件未找到")

在这个例子中,如果文件不存在,会抛出FileNotFoundError异常,并在with语句的except块中捕获和处理该异常。

5、使用多个except块捕获同一种异常

可以使用多个except块来捕获同一种异常,并在不同的块中执行不同的处理代码。例如:

try:  # 尝试执行可能引发异常的代码  result = int("not a number")  
except ValueError as e:  if "invalid literal" in str(e):  # 处理特定类型的数值转换异常  print("无效的字面量")  else:  # 处理其他类型的数值转换异常  print("其他类型的数值转换异常")

在这个例子中,如果发生ValueError异常,会根据异常的具体内容执行不同的处理代码。

四、总结

通过以上的介绍,我们可以看到Python提供了丰富的异常捕获和处理方式。在实际开发中,我们应该根据具体的需求和场景选择合适的方式来进行异常处理。同时,随着Python的不断发展和进步,未来可能会有更多的异常处理技术出现,为我们提供更多的选择和便利。

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

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

相关文章

优化Go语言HTTP应用程序性能的技巧

Go语言具有强大的性能和高效的网络编程能力,因此在构建高性能的HTTP应用程序时,使用Go语言是一个不错的选择。以下是一些优化Go语言HTTP应用程序性能的技巧: 使用goroutine和channel Go语言的goroutine和channel是实现并发编程的重要特性。…

将qt程序注册成服务

将qt程序注册成服务 1、qt服务模块管理下载 qt-solutions 2、QtService项目 2.1、将qtservice拷贝到项目代码路径 2.2、实现服务管理 PS&#xff1a;响应服务的启停 CustomService.h #include <QCoreApplication> #include "qtservice.h"class CustomSer…

HarmonyOS 应用事件打点开发指导

简介 传统的日志系统里汇聚了整个设备上所有程序运行的过程流水日志&#xff0c;难以识别其中的关键信息。因此&#xff0c;应用开发者需要一种数据打点机制&#xff0c;用来评估如访问数、日活、用户操作习惯以及影响用户使用的关键因素等关键信息。 HiAppEvent 是在系统层面…

Kafka集群架构原理(待完善)

kafka在zookeeper数据结构 controller选举 客户端同时往zookeeper写入, 第一个写入成功(临时节点), 成为leader, 当leader挂掉, 临时节点被移除, 监听机制监听下线,重新竞争leader, 客户端也能监听最新leader leader partition自平衡 leader不均匀时, 造成某个节点压力过大, …

SpringCloudGateway网关处拦截并修改请求

SpringCloudGateway网关处拦截并修改请求 需求背景 老系统没有引入Token的概念&#xff0c;之前的租户Id拼接在请求上&#xff0c;有的是以Get&#xff0c;Param传参形式&#xff1b;有的是以Post&#xff0c;Body传参的。需要在网关层拦截请求并进行请求修改后转发到对应服务。…

工业自动化的通信核心—钡铼技术R10A工业级路由器介绍

随着工业自动化的快速发展&#xff0c;工业通信技术也日新月异。在这个信息时代&#xff0c;工业通信设备的稳定性、可靠性和高效性变得尤为重要。作为工业自动化的核心部件之一&#xff0c;钡铼技术R10A工业级路由器以其出色的性能和卓越的功能在行业内赢得了广泛的赞誉。本文…

docker学习(十二、Redis主从容错迁移)

文章目录 一、容错切换迁移挂一个master节点6381&#xff0c;查看集群信息主节点挂一个&#xff0c;对应从节点切换为主节点&#xff0c;数据获取测试恢复挂的主节点&#xff0c;主从关系变化 二、小思考 docker搭建Redis集群相关知识&#xff1a; docker学习&#xff08;九、分…

C# SQLite基础工具类

目录 1、安装System.Data.SQLite工具包 2、创建数据库 3、数据库的连接与断开 4、执行一条SQL语句 5、批量执行sql语句 6、返回首行首列值 7、执行sql语句返回datatable 1、安装System.Data.SQLite工具包 2、创建数据库 /// <summary> /// 数据库路径 …

Github2023-12-22开源项目日报 Top10

根据Github Trendings的统计&#xff0c;今日(2023-12-22统计)共有10个项目上榜。根据开发语言中项目的数量&#xff0c;汇总情况如下&#xff1a; 开发语言项目数量Python项目4TypeScript项目2非开发语言项目2C项目1C项目1HTML项目1Dart项目1 Tailwind CSS&#xff1a;快速U…

kibana-7.15.2 一分钟下载、安装、部署 linux

文章目录 一、下载安装部署 1. 下载2. 解压3. 修改配置 二、kibana 启动 2.1. 创建kibana 用户2.2. 赋予权限2.3. 切换用户2.4. kibana启动2.5. 监控服务2.6. 监控服务2.7. kibana停止2.8. 效果图 三、kibana 启动2 3.1. 浏览器访问3.2. 效果图 一、下载安装部署 https:…

HTML美化网页

使用CSS3美化的原因 用css美化页面文本,使页面漂亮、美观、吸引用户 可以更好的突出页面的主题内容,使用户第一眼可以看到页面主要内容 具有良好的用户体验 <span>标签 作用 能让某几个文字或者某个词语凸显出来 有效的传递页面信息用css美化页面文本&#xff0c;使页面漂…

面试题:JVM 对锁都进行了哪些优化?

文章目录 锁优化自旋锁和自适应自旋锁消除锁粗化逃逸分析方法逃逸线程逃逸通过逃逸分析&#xff0c;编译器对代码的优化 锁优化 jvm 在加锁的过程中&#xff0c;会采用自旋、自适应、锁消除、锁粗化等优化手段来提升代码执行效率。 自旋锁和自适应自旋 现在大多的处理器都是…

易点易动设备管理系统:解决企业设备管理难题的利器

在现代企业中&#xff0c;设备管理是一个至关重要的环节。无论是制造业、物流业还是服务业&#xff0c;设备的高效管理对于企业的运营和竞争力都至关重要。然而&#xff0c;许多企业在设备管理方面面临着各种挑战。为了解决这些难题&#xff0c;易点易动设备管理系统应运而生。…

[vue]Echart使用手册

[vue]Echart使用手册 使用环境Echart的使用Echart所有组件和图表类型Echart 使用方法 使用环境 之前是在JQuery阶段使用Echart&#xff0c;直接引入Echart的js文件即可&#xff0c;现在是在vue中使用,不仅仅时echarts包&#xff0c;还需要安装vue-echarts&#xff1a; "…

Pycharm解释器的配置: System Intgerpreter 、Pipenv Environment、Virtualenv Environment

文章目录 前提1. 环境准备2. 了解虚拟环境 一、进入Interpreter设置页二、添加Interpreter1. 方式一2. 方式二 三、 System Interpreter四、 Pipenv Environment前提条件&#xff1a;详细步骤1&#xff09; 选择pipenv2&#xff09; 设置Base Interpreter3&#xff09; 设置Pip…

基于Java SSM框架实现人事员工考勤签到请假管理系统项目【项目源码+论文说明】

基于java的SSM框架实现人事员工考勤签到请假管理系统演示 摘要 在高速发展的时代&#xff0c;众多的软件被开发出来&#xff0c;给用户带来了很大的选择余地&#xff0c;而且人们越来越追求更个性的需求。在这种时代背景下&#xff0c;人们对人事管理系统越来越重视&#xff0…

css图片属性,图片自适应

CSS 图片属性指南&#xff1a;background-size 和 object-fit 在前端开发中&#xff0c;使用图片是非常常见的。为了让图片在网页中显示得更好&#xff0c;CSS 提供了多种属性来调整和控制图片的大小和布局。其中&#xff0c;background-size 和 object-fit 是两个常用的属性&a…

制作系统安装盘教程——烧录Windows原版镜像

前言 本次教程不经过WinPE工具进行安装Windows原版镜像&#xff0c;而是直接把系统镜像文件直接烧录进U盘&#xff0c;这样做的好处是不经过WinPE安装Win系统的过程&#xff0c;避免有些带木马病毒的WinPE在安装系统的过程把木马病毒带进系统&#xff0c;从而导致文件泄漏。 开…

【JavaWeb学习笔记】13 - JSP浏览器渲染技术

JSP 一、JSP引入 1.JSP现状 1.目前主流的技术是前后端分离(比如: Spring Boot Vue/React),我们会讲的.[看一下] 2. JSP技术使用在逐渐减少&#xff0c;但使用少和没有使用是两个意思&#xff0c;一些老项目和中小公司还在使用JSP&#xff0c;工作期间,你很有可能遇到JSP …

【设计模式-2.5】创建型——建造者模式

说明&#xff1a;本文介绍设计模式中&#xff0c;创建型设计模式中的最后一个&#xff0c;建造者模式&#xff1b; 入学报道 创建型模式&#xff0c;关注于对象的创建&#xff0c;建造者模式也不例外。假设现在有一个场景&#xff0c;高校开学&#xff0c;学生、教师、职工都…