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

关于python异常的总结

Python异常是在程序执行时发生的错误,可能会导致程序终止运行。

在Python中,异常处理是一种机制,它允许开发人员在程序发生异常时捕获、处理和报告这些异常,以便程序可以继续运行或在出现异常时进行优雅的退出。

在Python中,异常可以是标准异常(例如SyntaxError和TypeError)或自定义异常。标准异常是由Python内部定义的,而自定义异常是由开发人员定义的,通常用于特定的应用程序或库。

以下是一些常见的Python异常:

  1. SyntaxError:语法错误,通常是由于语法错误导致的,如缺少括号、冒号等。
  2. TypeError:类型错误,通常是由于将不同类型的对象组合在一起而引起的,如将字符串和数字相加。
  3. ValueError:值错误,通常是由于提供的值不符合预期的范围或格式而引起的,如将字符串转换为整数时提供的字符串无效。
  4. IndexError:索引错误,通常是由于尝试访问列表或元组中不存在的元素而引起的。
  5. KeyError:键错误,通常是由于尝试访问字典中不存在的键而引起的。
  6. IOError:输入/输出错误,通常是由于尝试读取或写入文件时出现问题而引起的。
  7. AttributeError:属性错误,通常是由于尝试访问对象不存在的属性或方法而引起的。

在Python中,可以使用try-except语句来捕获异常并处理它们。try语句包含可能会导致异常的代码,而except语句定义了在捕获异常时要执行的代码。

可以使用多个except语句来捕获不同类型的异常,try-except 还可以跟else 进行搭配,它的含义就是当 try 语句没有检测到任何异常的情况下,就执行 else 语句的内容,另外也可以使用finally语句定义在try语句块之后始终要执行的代码。

例如:

案例1:使用try-except语句来捕获异常并处理它们

举例:

try:
100/0 # 可能会导致异常的代码

except ZeroDivisionError: #(捕获特定的异常类型ZeroDivisionError,ZeroDivisionError是Python中的内置异常类之一,用于表示在除数为零的情况下进行了除法操作所引发的异常。)print('因为这里打印出异常类型:除数不能为0。')# 处理值错误的代码

案例2:使用try-except语句搭配else语句(当 try 语句没有检测到任何异常的情况下,就执行 else 语句的内容)

当 try 语句检测到任何异常的情况下,则不执行else 语句的内容

>>> try:
...     1 / 0
... except:
...     print("逮到了~")
... else:
...     print("没逮到~")
...

逮到了~

如果在 try 语句中检测到异常,那么就执行 except 语句的异常处理内容:

>>> try:
...     1 / 1
... except:
...     print("逮到了~")
... else:
...     print("没逮到~")
...
1.0

没逮到~

案例3:使用try-except语句搭配finally语句(无论异常发生与否,都必须要执行的语句finally语句)

举例:
try:
‘abc’+ 123

except TypeError: #TypeError为类型错误,通常是由于将不同类型的对象组合在一起而引起的,如将字符串和数字相加。print('因为这里打印出异常类型:类型错误。')# 处理类型错误的代码
finally:print('不论是否无法异常,都执行这句话') # 无论是否发生异常都会执行的代码

异常处理是Python中的重要概念之一,开发人员应该了解如何正确地捕获和处理异常,以确保程序的稳定性和可靠性。

进阶:捕获异常的方法

捕获异常的两种方法:不管是何种异常,都捕获异常信息。

1.使用Exception:所有的异常都是 Exception 的子类。所以 Exception能匹配所有类型的异常。
举例:

>>> try:100/0
except Exception  as e:print('未知异常:', e)
# 对于很多刚学Python或者是学着学着迷茫了的小伙伴,我给大家准备了一套Python的学习资料。
# 包括数百本电子书、Python基础视频教程、项目实战,疑难解答,直接在文末名片自取。未知异常: division by zero
>>>

可以正常捕获到异常的原因,但不能输出详细的异常信息(发送异常的位置和异常的代码)。

2.使用traceback模块:使用traceback模块里面的format_exc函数,可以显示异常的信息 和 异常产生处的函数调用栈的信息。

举例:

>>>  import traceback
>>>  try:100/0
except  :print(traceback.format_exc())Traceback (most recent call  last):File "<pyshell#5>", line 2, in <module>
ZeroDivisionError: division by  zero
>>>

上面的代码会打印出导致异常的详细的函数调用栈的信息

相关文章:

关于python异常的总结

Python异常是在程序执行时发生的错误&#xff0c;可能会导致程序终止运行。 在Python中&#xff0c;异常处理是一种机制&#xff0c;它允许开发人员在程序发生异常时捕获、处理和报告这些异常&#xff0c;以便程序可以继续运行或在出现异常时进行优雅的退出。 在Python中&…...

基于Java+SpringBoot+vue学生学习平台详细设计实现

基于JavaSpringBootvue学生学习平台详细设计实现 博主介绍&#xff1a;5年java开发经验&#xff0c;专注Java开发、定制、远程、指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言 文末获取源码联系方式 文章目…...

【云原生网关】Kong 使用详解

目录 一、前言 二、Kong介绍 三、Kong核心组件 3.1 kong组件介绍 3.1.1 Kong Server 3.1.2 Apache Cassandra/PostgreSQL 3.1.3 Kong dashboard 3.2 传统网关与Kong工作模式对比 四、Kong网关特征与架构 4.1 kong网关特征 4.1.1 可扩展性 4.1.2 模块化 4.1.3 在任…...

浅谈之Java多线程

Java多线程是Java语言中一个非常重要的特性&#xff0c;它允许程序同时执行多个任务。通过多线程&#xff0c;程序可以同时处理多项任务&#xff0c;从而缩短程序的执行时间。另外&#xff0c;多线程也有助于利用多核处理器&#xff0c;更好地发挥计算机硬件的性能。 那我们在…...

【Vue3学习笔记1】一个清单应用帮你入门Vue.js

Vue 目前已经是国内最流⾏的前端框架之⼀&#xff0c;Vue 3 带来的诸多优化更是让前端圈迎来了新的潮流&#xff0c;比如&#xff1a; 基于 Proxy 的全新响应式实现&#xff1b; Composition API <script setup> 组织代码的更优方式&#xff1b; 更有料的 TypeScript 支…...

go破冰之旅·8·go函数基本实践及各种玩法

一次5-10分钟即可搞定&#xff0c;以干货效率的学习方式带你更直观的玩转各种玩法&#xff01; 行文不易&#xff0c;一字一句纯手打创造&#xff0c;倾注了不少精力&#xff0c;感谢支持。 目录 什么是函数&#xff1f;有哪些元素&#xff1f; 函数参数、返回值 小程序&…...

Qt - 从零到壹的 打地鼠 游戏

❤️‍&#x1f525;欢迎收看西北风的blog&#xff0c;好男人就是我&#xff0c;我就是西北风。✨ Gitee 地址 W_A_Mole NTC_jason/cc语言 - 码云 - 开源中国 (gitee.com) 目录 &#x1f7e5;一&#xff1a;创建一个主窗体 &#x1f7e3;二.&#xff1a;添加主窗口背景图片…...

代码自动发布系统

之前是jenkins发现gitlab代码更新了就自动获取直接部署到服务器 现在是jenkins自动获取Code之后打包成镜像上传到仓库然后通知docker去拉取更新的镜像 分析 旧∶ 代码发布环境提前准备&#xff0c;以主机为颗粒度静态 新: 代码发布环境多套&#xff0c;以容器为颗粒度编译 …...

qemu-基础篇(一)——安装

文章目录 env安装查看版本查看支持的开发板查看支持的CPU的型号 env ubuntu 安装 sudo apt-get install qemu sudo apt-get install qemu-system-arm sudo apt-get install qemu-system查看版本 qemu-img -V qemu-system-arm --version qemu-system-aarch64 --version返回结…...

从根本上理解Synchronized的加锁过程

作为一个Java开发&#xff0c;对于Synchronized这个关键字并不会陌生&#xff0c;无论是并发编程&#xff0c;还是与面试官对线&#xff0c;Synchronized可以说是必不可少。 在JDK1.6之前&#xff0c;都认为Synchronized是一个非常笨重的锁&#xff0c;就是在之前的《谈谈Java…...

CANOE入门到精通——CANOE系列教程记录1 第一个仿真工程

本系列以初学者角度记录学习CANOE&#xff0c;以《CANoe开发从入门到精通》参考学习&#xff0c;CANoe16 demo版就可以进行学习 概念 CANoe是一种用于开发、测试和分析汽车电子系统的软件工具。它通过在不同层次上模拟汽车电子系统中的不同部件&#xff0c;如ECU、总线和传感…...

JavaEE——单例模式

文章目录 一、介绍什么是单例模式二、饿汉模式三、懒汉模式四、讨论两种模式的线程安全问题 一、介绍什么是单例模式 在介绍单例模式之前&#xff0c;我们得先明确一个名词设计模式。 所谓设计模式其实不难理解&#xff0c;就是在计算机这个圈子中&#xff0c;呢些大佬们为了…...

关于数据倾斜

1、数据倾斜表现 1.1 hadoop中的数据倾斜表现 有一个多几个Reduce卡住&#xff0c;卡在99.99%&#xff0c;一直不能结束。各种container报错OOM异常的Reducer读写的数据量极大&#xff0c;至少远远超过其它正常的Reducer伴随着数据倾斜&#xff0c;会出现任务被kill等各种诡异…...

Shell第一次作业

要求&#xff1a; 1、判断当前磁盘剩余空间是否有20G&#xff0c;如果小于20G&#xff0c;则将报警邮件发送给管理员&#xff0c;每天检查一次磁盘剩余空间。 ​2、判断web服务是否运行&#xff08;1、查看进程的方式判断该程序是否运行&#xff0c;2、通过查看端口的方式判断…...

实例解读nn.AdaptiveAvgPool2d((1, 1))

nn.AdaptiveAvgPool2d((1, 1))在PyTorch中创建一个AdaptiveAvgPool2d类的实例。该类在输入张量上执行2D自适应平均池化。 自适应平均池化是一种池化操作&#xff0c;它计算每个输入子区域的平均值并产生一个指定大小的输出张量。子区域的大小是根据输入张量的大小和输出张量的…...

泛型编程 之模板(template)

C另一种编程思想称为 泛型编程&#xff0c;主要利用的技术就是模板 目录 C另一种编程思想称为 泛型编程&#xff0c;主要利用的技术就是模板 一、概念 二、函数模板 1、语法与使用&#xff1a; 2、函数模板注意事项 3、普通函数与函数模板的区别 4、普通函数与函数模板的调用规…...

用ChatGPT问DotNet的相关问题,发现DotNet工程师的前景还不错

本人最近费了九牛二虎之力注册了一个ChatGPT账号&#xff0c;现在就给大家分享一下&#xff0c;问一下关于.NET的问题&#xff0c;看看ChatGPT的AI功能具体如何&#xff1f; 一、C#跟其它语言比较的优势 回答&#xff1a; C#是一门编程语言&#xff0c;它是为 Microsoft 的 …...

LeetCode_字符串_简单_415.字符串相加

目录 1.题目2.思路3.代码实现&#xff08;Java&#xff09; 1.题目 给定两个字符串形式的非负整数 num1 和num2&#xff0c;计算它们的和并同样以字符串形式返回。 你不能使用任何內建的用于处理大整数的库&#xff08;比如 BigInteger&#xff09;&#xff0c; 也不能直接将…...

Insix:面向真实的生成数据增强,用于Nuclei实例分割

文章目录 InsMix: Towards Realistic Generative Data Augmentation for Nuclei Instance Segmentation摘要本文方法数据增强方法具有形态学约束的前景增强提高鲁棒性的背景扰动 实验结果 InsMix: Towards Realistic Generative Data Augmentation for Nuclei Instance Segment…...

CleanMyMac X4.13.2最新版下载

现在cleanmymac x4.13.2中文版是大家首选的优秀mac清理软件。CleanMyMac集合了多种功能&#xff0c;几乎可以满足用户所有的清洁需求。它不仅包含各种清理功能&#xff0c;还具有卸载、维护、扩展、碎纸机等实用功能&#xff0c;可同时替代多种工具。它可以清理、优化、维护和监…...

终极Galgame社区完整指南:从零开始构建你的视觉小说精神家园

终极Galgame社区完整指南&#xff1a;从零开始构建你的视觉小说精神家园 【免费下载链接】kun-touchgal-next TouchGAL是立足于分享快乐的一站式Galgame文化社区, 为Gal爱好者提供一片净土! 项目地址: https://gitcode.com/gh_mirrors/ku/kun-touchgal-next 还在为寻找纯…...

从信任根到信任链:构建坚不可摧的数字信任体系

1. 信任根&#xff1a;数字世界的安全基石 想象一下你正在建造一座摩天大楼。无论设计多么精妙&#xff0c;如果地基不牢固&#xff0c;整栋建筑都可能坍塌。在数字安全领域&#xff0c;**信任根&#xff08;Root of Trust, RoT&#xff09;**就是这样的地基。它是一个密码系统…...

RK3568交叉编译环境搭建:ARM官方GCC 8.3与Linaro版本到底怎么选?我的踩坑与选择心得

RK3568交叉编译环境搭建&#xff1a;ARM官方GCC 8.3与Linaro版本深度对比与实战选择指南 在嵌入式开发领域&#xff0c;交叉编译环境的搭建往往是项目启动的第一道门槛。对于RK3568这样的高性能ARM处理器&#xff0c;选择合适的交叉编译器不仅关系到开发效率&#xff0c;更直接…...

小白程序员必看:大模型“语义崩塌”陷阱与收藏攻略!

本文深入解析了“语义崩塌”现象&#xff0c;即在大模型处理海量数据时&#xff0c;向量语义失去区分度导致搜索失效。以斯坦福RAG研究为例&#xff0c;揭示高维空间下“维度灾难”如何导致相关性计算失效&#xff0c;影响企业级应用。文章提出分层检索和基于图谱的检索作为解决…...

ROS实战:5分钟搞定大华网络摄像机RTSP流接入(Ubuntu18.04+Melodic版)

ROS实战&#xff1a;5分钟搞定大华网络摄像机RTSP流接入&#xff08;Ubuntu18.04Melodic版&#xff09; 在智能机器人开发领域&#xff0c;实时视频流处理是构建环境感知系统的核心能力之一。大华作为安防行业领先品牌&#xff0c;其网络摄像机被广泛应用于工业检测、智能巡检等…...

5分钟掌握:billd-desk跨平台远程控制高效解决方案

5分钟掌握&#xff1a;billd-desk跨平台远程控制高效解决方案 【免费下载链接】billd-desk 基于Vue3 WebRTC Nodejs Flutter搭建的远程桌面控制 项目地址: https://gitcode.com/gh_mirrors/bi/billd-desk 还在为远程办公的卡顿和限制而烦恼吗&#xff1f;当你急需远程…...

Linux环境下Python段错误全解析:从内存管理到线程安全的避坑手册

Linux环境下Python段错误全解析&#xff1a;从内存管理到线程安全的避坑手册 当你在深夜调试一个复杂的Python项目时&#xff0c;突然看到屏幕上跳出"Segmentation fault (core dumped)"的提示&#xff0c;那种感觉就像在高速公路上爆胎——明明代码逻辑看起来没问题…...

5分钟搞定AutoHotkey脚本转EXE:Ahk2Exe终极编译指南

5分钟搞定AutoHotkey脚本转EXE&#xff1a;Ahk2Exe终极编译指南 【免费下载链接】Ahk2Exe Official AutoHotkey script compiler - written itself in AutoHotkey 项目地址: https://gitcode.com/gh_mirrors/ah/Ahk2Exe 想要将AutoHotkey脚本快速转换为独立的可执行文件…...

整理‌ 主流国产AI龙虾的核心能力对比表(支持平台/部署方式/适用场景)腾讯WorkBuddy‌ ‌阿里JVS Claw 百度DuMate

根据当前的资料&#xff0c;腾讯WorkBuddy和百度的DuMate当前有一定一定量的免费额度&#xff0c;大家可以用起来&#xff01; 主流国产AI龙虾的核心能力对比表 五款主流国产AI龙虾的核心能力对比表已整理完成&#xff0c;涵盖支持平台、部署方式与适用场景三大维度&#xff…...

usearch的内存泄漏自动化测试:在CI中集成泄漏检测

usearch的内存泄漏自动化测试&#xff1a;在CI中集成泄漏检测 【免费下载链接】usearch Fastest Open-Source Search & Clustering engine for Vectors & &#x1f51c; Strings in C, C, Python, JavaScript, Rust, Java, Objective-C, Swift, C#, GoLang, and Wolf…...