【Python基础】Python错误和异常处理(详细实例)

本文收录于 《Python编程入门》专栏,从零基础开始,分享一些Python编程基础知识,欢迎关注,谢谢!

文章目录

    • 一、前言
    • 二、Python中的错误类型
    • 三、Python异常处理机制
        • 3.1 try-except语句
        • 3.2 try-except-else语句
        • 3.3 try-finally语句
    • 四、其他异常处理工具
        • 4.1 raise语句
        • 4.2 assert语句
    • 五、总结

一、前言

​ 在Python编程中,错误和异常处理是保证程序健壮性和稳定性的重要组成部分。Python提供了强大的异常处理机制,使开发者能够优雅地处理程序执行过程中可能出现的各种错误和异常情况。

本文将深入探讨Python中的错误类型、异常处理机制以及相关的最佳实践。

  • 什么是Python?

    Python是由荷兰人吉多·范罗苏姆于1990年初设计的一门高级编程语言,该语言应用领域非常广泛,尤其在数据科学、人工智能、游戏开发等领域,它已经成为最受欢迎的程序设计语言之一,非常适合新手学习。

    Python语言标准库官方使用手册:https://docs.python.org/zh-cn/3/library/turtle.html#turtle-methods

  • Python语言有哪些特点?

    1.易于学习:Python有相对较少的关键字,结构简单,和一个明确定义的语法,学习起来更加简单。

    2.易于阅读:Python代码定义的更清晰。

    3.易于维护:Python的成功在于它的源代码是相当容易维护的。

    4.丰富的库:Python的最大的优势之一具有丰富的标准库,并且跨平台的,在UNIX,Windows和Mac兼容很好。

    5.面向对象:Python支持面向对象编程,在“面向对象”的语言中,程序是由数据和功能组合而成的对象构建起来的。

    6.可移植:基于其开放源代码的特性,Python已经被移植(也就是使其工作)到许多平台。

    7.可扩展:如果你需要一段运行很快的关键代码,或者是想要编写一些不愿开放的算法,你可以使用C或C++完成那部分程序,然后从你的Python程序中调用。

    8.可嵌入: 你可以将Python嵌入到C/C++程序,让你的程序的用户获得"脚本化"的能力。

    在这里插入图片描述

二、Python中的错误类型

Python中的错误通常分为两类:语法错误和异常。

  • 语法错误(SyntaxError):这类错误发生在代码解析阶段,通常是由于代码书写不规范导致的。例如,括号不匹配、缺少冒号等。

例如:

print("Hello, world!)上述代码会引发一个SyntaxError: EOL while scanning string literal,因为字符串没有正确关闭。

异常信息如下图:
在这里插入图片描述

  • 异常:异常是在程序运行过程中发生的错误情况。

Python内置了许多异常类型,用于表示不同类型的错误。

常见的异常类型包括:

  • NameError:尝试访问未定义的变量或函数时引发。

    例如:

    print(message)# 这段代码会产生一个NameError: name 'message' is not defined,因为message变量没有被定义。
    

异常信息如下图:
在这里插入图片描述

  • TypeError:使用不兼容的类型进行操作时引发。

    例如:

    age = 25
    print("Your age is " + age + " years old.")
    # 这里会抛出一个TypeError: can only concatenate str (not "int") to str,因为不能将字符串和整数直接连接。需要将整数转换为字符串。
    

异常信息如下图:
在这里插入图片描述

  • ZeroDivisionError:尝试除以零时引发。

    例如:

    result = 10 / 0# 这段代码会引发一个ZeroDivisionError: division by zero。
    

异常信息如下图:
在这里插入图片描述

  • FileNotFoundError:尝试打开不存在的文件时引发。

    例如:

    file = open("nonexistent.txt", "r")# 上述代码会产生一个FileNotFoundError: [Errno 2] No such file or directory: 'nonexistent.txt'。
    

异常信息如下图:
在这里插入图片描述

  • IndexError:尝试访问列表或序列中不存在的索引时引发。

    例如:

    my_list = [1, 2, 3]
    print(my_list[5])# 上述代码会引发一个IndexError: list index out of range,因为列表my_list中没有索引为5的元素。
    

    异常信息如下图:
    在这里插入图片描述

除了内置异常,开发者还可以自定义异常类型来表示特定的错误情况。

例如,定义了一个名为InvalidAgeError的自定义异常类,用于处理年龄为负值的情况。如下:

# 自定义异常类
class InvalidAgeError(Exception):pass# 使用自定义异常
try:age = int(input("Enter your age: "))if age < 0:raise InvalidAgeError("Age cannot be negative.")
except InvalidAgeError as e:print(e)# 当输入负数比如-1时,会返回自定义异常信息"Age cannot be negative."    

异常信息如下图:
在这里插入图片描述

三、Python异常处理机制

Python提供了几种处理异常的方式,其中最常用的是try-except语句。

3.1 try-except语句

try-except语句用于捕获并处理异常。

其基本语法如下:

try:# 可能触发异常的代码
except ExceptionType:# 处理异常的代码

当try子句中的代码触发异常时,程序将跳转到与该异常类型匹配的except子句,并执行相应的处理代码。

如果try子句中的代码没有触发异常,except子句将被忽略。

一个try语句可以有多个except子句,用于处理不同类型的异常。此外,还可以使用一个不带异常类型的except子句来捕获所有异常,但这通常不推荐,因为它会隐藏程序中的逻辑错误。

其基本语法如下:

try:# 可能触发异常的代码
except ValueError:# 处理ValueError异常的代码
except ZeroDivisionError:# 处理ZeroDivisionError异常的代码
except Exception as e:# 处理其他所有异常的代码print("An error occurred:", e)
3.2 try-except-else语句

try-except语句还可以包含一个else子句,用于在try子句中的代码没有触发异常时执行。

其基本语法如下:

try:# 可能触发异常的代码
except ExceptionType:# 处理异常的代码
else:# 如果没有异常发生,执行这里的代码print("Everything went fine")
3.3 try-finally语句

try-finally语句用于确保无论是否发生异常,某些代码都会被执行,例如释放资源或关闭文件等。

其基本语法如下:

try:# 可能触发异常的代码
except ExceptionType:# 处理异常的代码
finally:# 无论是否发生异常,都会执行的代码print("This code will always run")

四、其他异常处理工具

4.1 raise语句

raise语句用于手动触发一个异常。这在编写自定义异常或需要在特定条件下终止程序时非常有用。

例如:

def check_positive(value):if value <= 0:raise ValueError("Value must be positive")return valuecheck_positive(-1)# 上述代码会引发ValueError: Value must be positive

异常信息如下图:
在这里插入图片描述

4.2 assert语句

assert语句用于在程序中插入断言,即在某些条件必须为真的情况下进行检查。如果条件为假,assert语句将触发AssertionError异常。

例如:

x = -5
assert x > 0, "x must be greater than zero"# 上述代码会引发AssertionError: x must be greater than zero

异常信息如下图:
在这里插入图片描述

五、总结

Python中的错误和异常处理是编写健壮和稳定程序的关键部分。通过使用try-except、try-finally、raise和assert等语句,开发者可以有效地捕获和处理程序执行过程中可能出现的各种错误和异常情况。这不仅提高了程序的可靠性,还增强了代码的可读性和可维护性。

如果您对文章中内容有疑问,欢迎在评论区进行留言,我会尽量抽时间给您回复。如果文章对您有帮助,欢迎点赞、收藏。您的点赞,是对我最大的支持和鼓励,谢谢 :-)

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

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

相关文章

TiDB 扩容过程中 PD 生成调度的原理及常见问题丨TiDB 扩缩容指南(一)

导读 作为一个分布式数据库&#xff0c;扩缩容是 TiDB 集群最常见的运维操作之一。本系列文章&#xff0c;我们将基于 v7.5.0 具体介绍扩缩容操作的具体原理、相关配置及常见问题的排查。 通常&#xff0c;我们根据当前资源状态来决定是否需要调整 TiKV 节点的规模&#xff0…

探索螺钉设计:部分螺纹与全螺纹,哪种更适合你的项目?

为什么有些螺钉有部分螺纹? 螺钉由头部、柄部和尖端组成&#xff0c;是世界上zui常用的紧固件之一。与螺栓一样&#xff0c;它们旨在将多个对象或表面连接在一起。但是&#xff0c;在比较不同类型的螺钉时&#xff0c;您可能会注意到其中一些都具有部分螺纹杆。 什么是螺柄&a…

Python | Leetcode Python题解之第397题整数替换

题目&#xff1a; 题解&#xff1a; class Solution:def integerReplacement(self, n: int) -> int:ans 0while n ! 1:if n % 2 0:ans 1n // 2elif n % 4 1:ans 2n // 2else:if n 3:ans 2n 1else:ans 2n n // 2 1return ans

Python_两个jpg图片文件名称互换

项目场景 处理Adobe Photoshop导出的两个切片的顺序错误问题 小编在进行图片切片处理的时候&#xff0c;发现用PS导出的切片顺序错误&#xff0c;例如用PS导出的切片分别为test_01.jpg&#xff0c;test_02.jpg&#xff0c;但实际的使用需求是将两个图片的顺序调换&#xff0c…

self-play RL学习笔记

让AI用随机的路径尝试新的任务&#xff0c;如果效果超预期&#xff0c;那就更新神经网络的权重&#xff0c;使得AI记住多使用这个成功的事件&#xff0c;再开始下一次的尝试。——llya Sutskever 这两天炸裂朋友圈的OpenAI草莓大模型o1和此前代码能力大幅升级的Claude 3.5&…

基于less和scss 循环生成css

效果 一、less代码 复制代码 item-count: 12; // 生成多少个 .item 类.item-loop(n) when (n > 0) {.icon{n} {background: url(../../assets/images/menu/icon{n}.png) no-repeat;background-size: 100% 100%;}.item-loop(n - 1);}.item-loop(item-count);二、scss代码 f…

【人工智能】Transformers之Pipeline(十七):文本分类(text-classification)

目录 一、引言 二、文本分类&#xff08;text-classification&#xff09; 2.1 概述 2.2 DistilBERT—BERT 的精简版&#xff1a;更小、更快、更便宜、更轻便 2.3 应用场景​​​​​​​ 2.4 pipeline参数 2.4.1 pipeline对象实例化参数 2.4.2 pipeline对象使用参数 …

【Hot100】LeetCode—287. 寻找重复数

目录 1- 思路题目识别快慢指针-类比链表判环 2- 实现⭐31. 下一个排列——题解思路 3- ACM 实现 原题链接&#xff1a;287. 寻找重复数 1- 思路 题目识别 识别1 &#xff1a;给定一个数组&#xff0c;寻找数组中的重复数。必须用 O(1) 的空间复杂度&#xff0c;且不能修改数组…

VMware Fusion Pro 13 Mac版虚拟机 安装Win11系统教程

Mac分享吧 文章目录 Win11安装完成&#xff0c;软件打开效果一、VMware安装Windows11虚拟机1️⃣&#xff1a;准备镜像2️⃣&#xff1a;创建虚拟机3️⃣&#xff1a;虚拟机设置4️⃣&#xff1a;安装虚拟机5️⃣&#xff1a;解决连不上网问题 安装完成&#xff01;&#xff0…

fuxa搭建与使用(web组态)

1. 安装Node.js -> npm安装 参考网址&#xff1a;https://blog.csdn.net/WHF__/article/details/129362462 一、安装运行 C:\WINDOWS\system32>node -v v20.17.0 C:\WINDOWS\system32>npm -v 10.8.2 二、环境配置 在安装路径&#xff08;D:\Program_Files\nodejs&a…

[数据集][目标检测]车油口挡板开关闭合检测数据集VOC+YOLO格式138张2类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;138 标注数量(xml文件个数)&#xff1a;138 标注数量(txt文件个数)&#xff1a;138 标注类别…

【2024.08】图模互补:知识图谱与大模型融合综述-笔记

阅读目的&#xff1a;假设已有一个知识图谱&#xff0c;如何利用图谱增强模型的问答&#xff0c;如何检索知识图谱、知识图谱与模型的文本如何相互交互、如何利用知识图谱增强模型回答的可解释性。 从综述中抽取感兴趣的论文进一步阅读。 来源&#xff1a;图模互补&#xff1…

Docker零基础入门

参考课程https://www.bilibili.com/video/BV1VC4y177re/?vd_source=b15169a302bee35f484245aecc69d4dd 参考书籍Docker 实践 - 面向 AI 开发人员的 Docker 实践 (dockerpractice.readthedocs.io) 1. 什么是Docker 1.1. Docker起源 随着计算机的发展,计算机上已经可以运行多…

CAN通讯常见错误纠正

CAN通讯常见错误 1.在使用CAN设备进行数据通讯时&#xff0c;有时候参数配置不当可能就会导致通讯的失败&#xff0c;如下图1所示&#xff0c;出现通信错误的原因是两个设备的波特率配置不一致导致。 图1 2.有时候在配置参数的时候&#xff0c;不能只关注波特率速度配置一致就…

Script-server: 一款开源的脚本管理工具,为你的Python脚本提供一个直观的 Web UI

在日常工作中&#xff0c;我们经常会使用各种脚本来自动化任务&#xff0c;提升效率。但传统的脚本管理方式往往伴随着一些困扰&#xff1a;复杂的命令行操作、难以理解的脚本参数、缺乏直观的反馈等等。这些问题&#xff0c;让原本应该便捷的脚本管理变得繁琐。 Script-server…

太速科技-基于XC7Z100+AD9361的双收双发无线电射频板卡

基于XC7Z100AD9361的双收双发无线电射频板卡 一、板卡概述 基于XC7Z100AD9361的双收双发无线电射频板卡是基于Xilinx ZYNQ FPGA和ADI的无线收发芯片AD9361开发的专用功能板卡&#xff0c;用于4G小基站&#xff0c;无线图传&#xff0c;数据收发等领域。 二、板卡…

QQ频道机器人零基础开发详解(基于QQ官方机器人文档)[第三期]

QQ频道机器人零基础开发详解(基于QQ官方机器人文档)[第三期] 第三期介绍&#xff1a;频道模块之频道成员 目录 QQ频道机器人零基础开发详解(基于QQ官方机器人文档)[第三期]第三期介绍&#xff1a;频道模块之频道成员获取子频道在线成员数获取频道成员列表获取频道身份组成员列…

Java项目: 基于SpringBoot+mybatis+maven课程答疑系统(含源码+数据库+毕业论文)

一、项目简介 本项目是一套基于SpringBootmybatismaven课程答疑系统 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#xff0c;eclipse或者idea 确保可以运行&#xff01; 该系统功能完善、界面美观、操作简单、…

102.WEB渗透测试-信息收集-FOFA语法(2)

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a; 易锦网校会员专享课 上一个内容&#xff1a;101.WEB渗透测试-信息收集-FOFA语法&#xff08;1&#xff09; FOFA使用实例 • title&q…

资深盘点:国内外知名的ERP管理系统厂商有哪些?

已经考虑引入ERP系统却担心面临以下问题&#xff1f;ERP系统流程僵化难以调整&#xff1f;流程与实际业务脱节&#xff1f;培训不到位、技术支持不及时导致难以实现全员使用、共创&#xff1f;市面上的ERP系统众多不知道如何选择&#xff1f; 今天就根据2024最新市场动态&…