当前位置: 首页 > news >正文

python基础——异常捕获【try-except、else、finally】

📝前言:
这篇文章主要介绍一下python基础中的异常处理:
1,异常
2,异常的捕获
3,finally语句

🎬个人简介:努力学习ing
📋个人专栏:C语言入门基础以及python入门基础
🎀CSDN主页 愚润求学
🌄每日鸡汤:路漫漫其修远兮,吾将上下而求索


文章目录

  • 一,异常
    • 1,什么是异常?
    • 2,异常有类型吗?
  • 二,异常捕获
    • 1,什么是异常捕获
    • 2,如何进行异常捕获?
      • (1)普通捕获异常
      • (2)捕获多个异常
      • (3)else和finally语句

一,异常

1,什么是异常?

Python中的异常是在程序执行期间发生的错误,它们会中断程序的正常流程。当程序运行时,如果出现异常,Python会中断当前执行任务的控制权,并寻找相应的异常处理器。

2,异常有类型吗?

答案是:有! 如,下面是几种常见的异常类型:
ZeroDivisionError: 当除数为零时引发。
IndexError: 当尝试访问列表、元组或字符串中不存在的索引时引发。
KeyError: 当尝试访问字典中不存在的键时引发。
TypeError: 当使用不支持该操作的数据类型时引发,例如将字符串与整数相加。
ValueError: 当使用不支持该值的数据类型时引发,例如使用非浮点数作为float()函数的参数。
IOError: 当发生I/O错误时引发,例如打开一个不存在的文件。
MemoryError: 当内存不足时引发。
OverflowError: 当数值运算结果太大或太小,无法表示为浮点数时引发。
RecursionError: 当递归深度超过限制时引发。
SyntaxError: 当Python解释器遇到语法错误时引发,例如多了一个或少了闭合的括号。
IndentationError: 当Python解释器遇到缩进错误时引发,例如代码块的缩进不一致。
TabError: 当混合使用制表符和空格进行缩进时引发。

二,异常捕获

1,什么是异常捕获

异常捕获是程序在执行过程中,对可能出现的不正常情况(即异常)进行捕捉并处理的过程。通过异常捕获,程序可以在出现错误时继续运行,而不是立即终止

2,如何进行异常捕获?

在Python中,可以使用try-except语句来进行异常捕获。基本的结构如下:

try:# 尝试执行的代码...
except SomeException (或:except SomeException as e):# 当SomeException异常发生时执行的代码...

其中,try块包含程序尝试执行的代码,而except块包含当特定的异常发生时执行的代码
当在try块中的代码发生异常时,程序会立即跳到紧跟着的except块,并执行该块中的代码。然后,程序会继续执行try块之后的代码。
这个e就是把异常赋值给了变量e(也可以理解为得到一个异常对象e
如果不输入SomeException(异常类型)则代表捕获全部异常,即:
except: ...代表捕获全部异常
同时等效于:except Exception: ...

(1)普通捕获异常

以下是一个简单的例子,演示如何使用try和except捕获异常:

如,当我们运行下面有问题的代码:

number = int("not a number")

程序会报出下面的错误,并且停止运行:
在这里插入图片描述
这是因为我们不能直接将(不是数字的)字符串转换成整数

这时候,假如我们无法确定int()转换会不会出问题,我们就可以用一个try-except来实现:在有问题的时候捕获这个异常,而不停止运行程序。如:

try:# 尝试将字符串转化为整数number = int("not a number")
except ValueError:# 如果转换失败,捕获ValueError异常print("输入的内容不是一个有效的整数。")

运行结果:
在这里插入图片描述
可见:ValueError异常被捕获了,并打印"输入的内容不是一个有效的整数。"。

(2)捕获多个异常

实际上,我们还可能想要捕获多种异常,或者在不同的except块中捕获不同的异常。例如:

try:# 尝试将字符串转化为整数number = int("not a number")
except ValueError:# 如果转换失败,捕获ValueError异常print("输入的内容不是一个有效的整数。")
except ZeroDivisionError:# 如果除以零,捕获ZeroDivisionError异常print("除数不能为零。")

这个例子中,我们同时捕获了ValueErrorZeroDivisionError异常。

(3)else和finally语句

这两条语句是可选的,try-except是必选的
else块中是:异常没有发生时,执行的代码
finally是:无论是否发生异常都要执行的代码
以下是一个使用这些语句的简单示例:

try:# 尝试将字符串转换为整数number = int("string")
except ValueError:print("发生了一个 ValueError 异常!")
else:print("字符串成功转换为整数!")
finally:print("这是 finally 块,无论是否发生异常,都会执行。")

输出结果:
在这里插入图片描述
在上述示例中,由于字符串不能转换为整数,所以触发了ValueError异常。因此,except块中的代码被执行,而else块中的代码则不会执行。


🌈我的分享也就到此结束啦🌈
要是我的分享也能对你的学习起到帮助,那简直是太酷啦!
若有不足,还请大家多多指正,我们一起学习交流!
📢公主,王子:点赞👍→收藏⭐→关注🔍
感谢大家的观看和支持!祝大家都能得偿所愿,天天开心!!!

相关文章:

python基础——异常捕获【try-except、else、finally】

📝前言: 这篇文章主要介绍一下python基础中的异常处理: 1,异常 2,异常的捕获 3,finally语句 🎬个人简介:努力学习ing 📋个人专栏:C语言入门基础以及python入门…...

JAVA面试大全之JVM和调优篇

目录 1、类加载机制 1.1、类加载的生命周期? 1.2、类加载器的层次? 1.3、Class.forName()和ClassLoader.loadClass()区别?...

数据可视化-ECharts Html项目实战(8)

在之前的文章中,我们学习了如何设置散点图涟漪效果与仪表盘动态指针效果。想了解的朋友可以查看这篇文章。同时,希望我的文章能帮助到你,如果觉得我的文章写的不错,请留下你宝贵的点赞,谢谢 今天的文章,会…...

JavaSE:继承和多态(下篇)

目录 一、前言 二、多态 (一)多态的概念 (二)多态实现条件 (三)多态的优缺点 三、重写 (一)重写的概念 (二)重写的规则 (三)重…...

springboot+mybatis项目集成p6spy输出格式化sql日志

本文背景:公司项目框架是基于springboot+mybatis的web项目,由于鄙人在使用过程中发现打印的mybatis日志每次都要粘贴出来,然后再用在线工具的格式化填充参数,很不方便,最近发现那个在线的工具打不开了,更不方便了,因此想有没有直接可以输出的填充好参数的sql语句,当然i…...

yarn安装和使用及与npm的区别

一、yarn安装和使用 要安装和使用yarn,您可以按照以下步骤进行操作: 安装Node.js:首先,您需要在您的计算机上安装Node.js。您可以从Node.js的官方网站(https://nodejs.org/en/download/)下载并安装适用于您…...

【3D-GS】Gaussian Splatting SLAM——基于3D Gaussian Splatting的全网最详细的解析

【3D-GS】Gaussian Splatting SLAM——基于3D Gaussian Splatting的定SLAM 3D-GS 与 Nerf 和 Gaussian Splatting1. 开山之作 Nerf2. 扛鼎之作 3D Gaussian Splatting2.1 什么是3D高斯?高斯由1D推广到3D的数学推导2.2 什么是光栅化?2.3 什么是Splatting?2.4 什么是交叉优化?…...

推荐多样性 - 华为OD统一考试(C卷)

OD统一考试(C卷) 分值: 200分 题解: Java / Python / C++ 题目描述 推荐多样性需要从多个列表中选择元素,一次性要返回N屏数据(窗口数量),每屏展示K个元素(窗口大小),选择策略: 各个列表元素需要做穿插处理,即先从第一个列表中为每屏选择一个元素,再从第二个列表…...

vue基础教程(4)——十分钟吃透vue路由router

同学们可以私信我加入学习群! 正文开始 前言一、路由概念二、路由使用三、创建路由对应的组件四、给整个项目一个入口总结 前言 前面的文章运行成功后,页面显示如下: 在这个页面中,点击Home和About都会切换右面的页面内容&#…...

使用OpenSSL指令测试椭圆曲线签名算法ECDSA

文章目录 小结问题及解决获取secp256r1的公钥和私钥DER格式使用OpenSSL及secp256r1算法获得签名使用OpenSSL及secp256r1算法对签名进行认证 参考 小结 本文记录了使用OpenSSL指令测试椭圆曲线签名算法ECDSA,进行了以下操作:生成椭圆曲线secp256r1 公私密…...

ubuntu之搭建samba文件服务器

1. 在服务器端安装samba程序 sudo apt-get install samba sudo apt-get install smbclient 2.配置samba服务 sudo gedit /etc/samba/smb.conf 在文件末尾追加入以下配置 [develop_share] valid users ancy path /home/ancy public yes writable y…...

P10—P11:Java程序的编译和运行

编译阶段(P10) Java程序的运行包括两个阶段:编译阶段、运行阶段编译阶段主要任务:对Java源程序(以.java为后缀的文件),进行检查其是否符合Java的语法规则。如果符合,则生成字节码文…...

【Docker】Windows中打包dockerfile镜像导入到Linux

【Docker】Windows中打包dockerfile镜像导入到Linux 大家好 我是寸铁👊 总结了一篇【Docker】Windows中打包dockerfile镜像导入到Linux✨ 喜欢的小伙伴可以点点关注 💝 前言 今天遇到一个新需求,如何将Windows中打包好的dockerfile镜像给迁移…...

数据结构之单链表实现(JAVA语言+C语言)

一、理论 1 单链表结构 2 增、删、查 、改思路 (增)直接添加放到最后即可。按顺序添加:找到要修改的节点的前一个节点,插入新节点()。(改)要修改的节点修改内容即可。(…...

docker 安装Sentinel

1.拉取镜像:docker pull bladex/sentinel-dashboard 2.运行镜像:docker run --name sentinel -d -p 8858:8858 -d bladex/sentinel-dashboard 3. 访问地址: 本地地址:http://localhost:8858 (默认端口为8080) 远程地址&#xf…...

通过内网穿透、域名解析实现本地服务部署到公网的架构设计方案

本文主要是总结这些年自己在家玩互联网服务的心得收获, 同时随着年龄增大, 发现脑子确实越来越不好用, 只有记录到笔记中才是真正有意义的。 学生时期做了一些实验, 比如给实验室做日报系统、管理10多台服务器,当时学习了很多架构设计的知识,比如集群化…...

语音陪玩交友软件系统程序-app小程序H5三端源码交付,支持二开!

电竞行业的发展带动其周边产业的发展,绘制着游戏人物图画的抱枕、鼠标垫、海报销量极大,电竞游戏直播、游戏教程短视频也备受人们喜爱,自然,像游戏陪练、代练行业也随之生长起来,本文就来讲讲,从软件开发角…...

import关键字的使用

- import : 导入 - import语句来显式引入指定包下所需要的类。相当于import语句告诉编译器到哪里去寻找这个类。为了使用定义在其它包中的 Java 类,需用 import 语句来显式引入指定包下所需要的类。相当于 import 语句告诉编译器到哪里去寻找这个类 。 语法格式 …...

江协STM32:点亮第一个LED灯和流水灯

很多单片机都是高电平弱驱动,低电平强驱动,所以这里是低电平有效 点亮一个LED灯 操作STM32的GPIO需要三个操作: 第一个使用RCC开启GPIO的时钟 第二步使用GPIO_Init函数初始化GPIO 第三步使用输出或输入函数控制GPIO 1.使用RCC开启GPIO的时…...

设计模式之建造者模式精讲

也叫生成器模式。将一个复杂的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 在建造者模式中,有如下4个角色: 抽象建造者(Builder):用于规范产品的各个组成部分,并进行抽象&…...

vue3源码解析——watch和watchEffect区别

watch和watchEffect是Vue 3.0中新增的两个响应式API,用于监听数据的变化。watch适用于需要获取新值和旧值,或者需要懒执行的场景,而watchEffect适用于需要监听多个数据源,并且需要立即执行的场景。它们之间的区别如下:…...

微服务(基础篇-006-Docker)

目录 初识Docker(1) Docker解决的问题(1.1) Docker与虚拟机(1.2) 镜像和容器(1.3) Docker和DockerHub(1.4) docker架构(1.5) 安…...

深度学习算法概念介绍

前言 深度学习算法是一类基于人工神经网络的机器学习方法,其核心思想是通过多层次的非线性变换,从数据中学习表示层次特征,从而实现对复杂模式的建模和学习。深度学习算法在图像识别、语音识别、自然语言处理等领域取得了巨大的成功&#xf…...

查找算法及查找常用数据结构总结

1.顺序表查找 基本方法: 设查找表以一维数组来存储,要求在此表中查找出关键字的值为x的元素的位置,若查找成功,则返回其位置(即下标),否则,返回一个表示元素不存在的下标&#xff0…...

大语言模型---强化学习

本文章参考,原文链接:https://blog.csdn.net/qq_35812205/article/details/133563158 SFT使用交叉熵损失函数,目标是调整参数使模型输出与标准答案一致,不能从整体把控output质量 RLHF(分为奖励模型训练、近端策略优化…...

前端三剑客 —— CSS (第二节)

目录 内容回顾: CSS选择器*** 属性选择器 伪类选择器 1):link 超链接点击之前 2):visited 超链接点击之后 3):hover 鼠标悬停在某个标签上时 4):active 鼠标点击某个标签时,但没有松开 5):fo…...

牛客NC31 第一个只出现一次的字符【simple map Java,Go,PHP】

题目 题目链接: https://www.nowcoder.com/practice/1c82e8cf713b4bbeb2a5b31cf5b0417c 核心 Map参考答案Java import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可*…...

软考系统架构设计师(摘抄)01

架构师承担的责任 系统架构师设计师是承担系统架构设计的核心角色,他不仅是连接用户需求和系统进一步设计与实现的桥梁,也是系统开发早期阶段质量保证的关键角色。系统架构师就是项目的总设计师,他是一个既需要掌控整体又需要洞悉局部瓶颈&a…...

5G无线接入网和接口协议

**部分笔记** 4.3无线协议架构 NR无线协议分为两个平面:用户面和控制面。 用户面(UP):协议栈及用户数据采用的协议 控制面(Control Plane,CP)协议栈即系统的控制信令传输采用的协议簇。 虚线标注的是信令数据的流向。一个UE在…...

【力扣刷题日记】1173.即时食物配送I

前言 练习sql语句,所有题目来自于力扣(https://leetcode.cn/problemset/database/)的免费数据库练习题。 今日题目: 1173.即时食物配送I 表:Delivery 列名类型delivery_idintcustomer_idintorder_datedatecustomer…...

做网站好的品牌/友情连接

作为一款出色的文件和文件夹比较工具,Beyond Compare受到越来越多不同领域不同职业的人士的喜爱,最新Beyond Compare 4中文版系统支持:Windows、Linux、Mac OSX。软件拥有强大的比较功能,其中在执行版本比较操作时,可以…...

淘宝网站建设的目标是什么意思/营销失败案例分析

使用python setup.py install 折腾了半天没办法解决,最终用 “pip install 包名” 这个办法解决了。 以后忠诚的爱上了pip了 numpy不要轻易升级,升级可能会出现很多问题,如果升级之后出现了问题,可以进入相关目录中删除numpy文…...

有没有做淘宝客网站的/网络推广员是干嘛的

Java设计模式——工厂模式Java设计模式——工厂模式1 概述2 简单工厂模式2.1 结构2.2 实现2.4 优缺点3 工厂方法模式3.1 概念3.2 结构3.3 实现3.4 优缺点4 抽象工厂模式4.1 概念4.2 结构4.2 实现4.3 优缺点4.4 使用场景5 模式扩展6 JDK源码解析-Collection.iterator方法Java设计…...

开发公司采购招聘/seo关键词分析

最近有个概念吵得很火,网络爬虫,但是基本都是用什么python或者JAVA写,貌似很少看到用c写的,我在网上找了一个,看到其实还是很简单的算法。 算法讲解:1.遍历资源网站 2.获取html信息 3.然后解析网址和图片…...

电子商务网站建设的核心是/长沙网址seo

一、基本搜索 逻辑符 与(空格)、或(OR)、非(-)。 ""全匹配搜索 加入双引号表示完全匹配搜索 *通配符 二、高级搜索 intitle:只搜索网页标题(即html的title指定的部分)含有关键词的页面 例&#x…...

小程序游戏制作/东莞百度seo排名

作者|yawn Lauhttp://jvm123.com/2019/08/springboot-activiti.html依赖:新建springBoot项目时勾选activiti,或者在已建立的springBoot项目添加以下依赖:org.activitiactiviti-spring-boot-starter-basic6.0.0配置:数据…...