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,一经查实,立即删除!

相关文章

ES6 语法精粹简读

本文旨在记录 ES6 的核心常用语法,略去一些细节。 文章目录 1 var 函数作用域与 let/const 块作用域2 解构赋值数组结构赋值对象结构赋值3 ES6 中字符串的新语法模板字符串模板编译标签模板4 ES6 中的函数默认值rest 参数箭头函数this 指向问题部署管道机制尾调用优化

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

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

一阶马尔科夫过程

一阶马尔科夫过程 一阶马尔可夫过程是一个随机过程,它具有这样的特性:系统的下一个状态仅依赖于当前状态,而不依赖于之前的历史状态。这种性质被称为“无记忆性”或马尔可夫性质。在数学上,如果一个过程 { X n } \{X_n\} {Xn​}是…

将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 是在系统层面…

K 近邻算法(K-Nearest Neighbor),简称 KNN 算法 简介

K 近邻算法&#xff08;K-Nearest Neighbor&#xff09;&#xff0c;简称 KNN 算法 基于距离计算的方式来解决分类问题. 数学描述: 对于一个待测的样本点&#xff0c;我们去参考周围最近的已知样本点的分类&#xff0c;如果周围最近的 K 个样本点属于第一类&#xff0c;我们就…

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> /// 数据库路径 …

FAQ:Operator Overloading篇

文章目录 1、What’s the deal with operator overloading? &#xff08;运算符重载是怎么回事?&#xff09;2、What are the benefits of operator overloading?&#xff08;运算符重载有什么好处&#xff1f;&#xff09;3、What are some examples of operator overloadi…

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…

main函数获取传入的参数

文章目录 代码获取到参数转整型 代码 #include <stdio.h> #include <stdlib.h> #include <getopt.h> #include <stdint.h>static uint8_t optstr[] "?:i:o:v:h:"; static struct option long_options[] {{"input", required_…

c# opencv 提取图片文字,如读取身份证号

在C#中使用OpenCV读取身份证号码并不是一个直接的任务&#xff0c;因为OpenCV主要是一个用于图像处理和计算机视觉的库&#xff0c;它并不直接支持文本识别功能。然而&#xff0c;你可以结合其他OCR&#xff08;Optical Character Recognition&#xff0c;光学字符识别&#xf…

spark-thrift-server 报错 Wrong FS

文章目录 [toc]具体报错实际原因查看 hive 元数据修改 spark-thrift-server 配置修改 hive 元数据 具体报错 spark-thrift-server 执行删表语句&#xff0c;出现如下报错 Error: org.apache.hive.service.cli.HiveSQLException: Error running query: org.apache.spark.sql.Ana…

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;易点易动设备管理系统应运而生。…