Python 基础(十八):异常处理

news2024/11/26 21:30:03

在这里插入图片描述

❤️ 博客主页:水滴技术
🌸 订阅专栏:Python 入门核心技术
🚀 支持水滴:点赞👍 + 收藏⭐ + 留言💬

文章目录

  • 一、异常是什么?
  • 二、异常处理的基本语法
  • 三、捕获特定的异常类型
  • 四、finally语句
  • 五、自定义异常
  • 六、assert语句
  • 七、Python内置异常
  • 八、总结
  • 系列文章
  • 热门专栏


大家好,我是水滴~~

Python是一种易学易用的编程语言,但即使是经验丰富的开发人员也会偶尔遇到错误和异常。在这篇教程中,我们将深入讨论Python中的异常处理。

一、异常是什么?

在Python中,当发生错误或意外情况时,会引发异常。异常是Python中的一种错误处理机制,它允许程序员捕获和处理错误,以避免程序崩溃。

Python中的异常通常是由错误的语法或运行时错误引起的,例如:

  • 语法错误(Syntax Error):在编写代码时,违反了Python语法规则。

  • 运行时错误(Runtime Error):这是在程序运行时发生的错误,例如尝试使用未定义的变量或调用不存在的函数等。

二、异常处理的基本语法

在Python中,我们可以使用tryexcept语句来捕获和处理异常。try语句用于包含可能引发异常的代码块,而except语句用于定义处理异常的代码块。

以下是tryexcept语句的基本语法:

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

在上面的代码中,当try语句块中的代码引发异常时,控制将转移到except语句块中的代码,以处理异常。

三、捕获特定的异常类型

在实际编程中,我们通常只想捕获特定的异常类型。这可以通过指定一个或多个异常类型来实现。

以下是一个示例,演示如何捕获指定的异常类型:

try:
    # 可能引发异常的代码
    x = 10 / 0
except ZeroDivisionError:
    # 处理除以零的异常
    print("除以零错误")
except:
    # 处理所有其他异常
    print("发生了一个错误")

在上面的示例中,我们使用了两个except语句。第一个except语句捕获ZeroDivisionError异常,这是由于除以零引起的异常。第二个except语句用于处理所有其他异常。

四、finally语句

在Python中,还有一个finally语句,它用于定义在try语句块完成后始终要执行的代码块。无论try语句块是否引发异常,finally语句块都将被执行。

以下是一个使用finally语句的示例:

try:
    # 可能引发异常的代码
    f = open("myfile.txt", "r")
    data = f.read()
    print(data)
except:
    # 处理异常
    print("无法读取文件")
finally:
    # 关闭文件
    f.close()

在上面的示例中,我们尝试打开一个名为“myfile.txt”的文件,并读取其中的数据。如果出现任何异常,我们将打印“无法读取文件”。无论是否出现异常,我们都将使用finally语句块关闭文件。

五、自定义异常

除了Python内置的异常类之外,我们还可以定义自己的异常类。这可以通过创建一个新的异常类来实现。为了创建一个新的异常类,我们必须继承Python内置的Exception类或其子类,并定义自己的异常消息。

以下是一个示例,演示如何定义自己的异常类:

class CustomError(Exception):
    def __init__(self, message):
        self.message = message

在上面的示例中,我们创建了一个名为CustomError的自定义异常类,它继承自Python内置的Exception类。我们定义了一个构造函数,它接受一个消息参数,并将其存储为异常消息。

我们可以在程序中使用raise语句来引发自定义异常:

try:
    # 可能引发异常的代码
    x = int(input("请输入一个正整数:"))
    if x <= 0:
        raise CustomError("输入必须是正整数")
except CustomError as e:
    # 处理自定义异常
    print(e)
except:
    # 处理所有其他异常
    print("发生了一个错误")

在上面的示例中,我们要求用户输入一个正整数。如果输入的值小于或等于0,我们将引发自定义异常CustomError,并在except语句块中处理它。

六、assert语句

在Python中,还有一种异常处理技术是使用assert语句。assert语句用于检查某些条件是否为真,并在条件不满足时引发一个异常。assert语句的基本语法如下:

assert <condition>, <error message>

在上面的代码中,<condition>是一个布尔表达式,如果为False,则会引发一个异常。<error message>是一个可选的错误消息,用于描述何时发生了异常。

以下是一个使用assert语句的示例:

x = 10
assert x == 5, "x的值应该是5"

在上面的示例中,我们使用assert语句检查变量x的值是否等于5。由于x的值是10,不等于5,因此将引发一个异常,并输出错误消息“x的值应该是5”。

七、Python内置异常

以下是Python 3.10版本中所有内置异常类型及其含义的分层次列表:

  • BaseException:所有内置异常的基类

    • SystemExit:程序退出时引发的异常

    • KeyboardInterrupt:用户中断程序时引发的异常

    • GeneratorExit:生成器函数被关闭时引发的异常

    • Exception:大多数内置异常的基类

      • StopIteration:用于迭代器的异常,表示迭代完成

      • StopAsyncIteration:用于异步迭代器的异常,表示迭代完成

      • ArithmeticError:所有算术异常的基类

        • FloatingPointError:浮点数运算异常

        • OverflowError:数值运算结果太大而无法表示

        • ZeroDivisionError:除数为零

      • AssertionError:断言语句(assert)失败

      • AttributeError:访问对象不存在的属性

      • BufferError:缓冲区操作失败

      • EOFError:没有读取到数据

      • ImportError:无法导入模块或模块不存在

        • ModuleNotFoundError:无法找到模块
      • LookupError:无法找到值的基类

        • IndexError:索引超出序列范围

        • KeyError:字典中不存在键

      • MemoryError:内存耗尽

      • NameError:名称未声明或不存在

        • UnboundLocalError:尝试访问未初始化的本地变量
      • OSError:由操作系统引起的异常

        • BlockingIOError:I/O操作无法立即完成

        • FileExistsError:文件已存在

        • FileNotFoundError:文件或目录不存在

        • InterruptedError:系统调用被中断

        • IsADirectoryError:尝试对目录进行文件操作

        • NotADirectoryError:尝试对非目录进行目录操作

        • PermissionError:没有适当的权限

        • ProcessLookupError:指定的进程不存在

        • TimeoutError:操作超时

      • ReferenceError:弱引用(weak reference)操作失败

      • RuntimeError:通用运行时异常的基类

        • NotImplementedError:尚未实现的方法

        • RecursionError:递归调用层数过多

      • SyntaxError:语法错误

        • IndentationError:缩进错误
      • SystemError:解释器内部错误

      • TypeError:类型不匹配

      • ValueError:值不符合预期

        • UnicodeError:Unicode相关的错误
      • Warning:警告的基类

        • DeprecationWarning:过时警告

        • PendingDeprecationWarning:即将过时警告

        • RuntimeWarning:运行时警告

        • SyntaxWarning:语法警告

        • UserWarning:用户自定义警告

        • FutureWarning:未来可能会改变的警告

        • ImportWarning:导入模块时的警告

        • UnicodeWarning:Unicode相关的警告

        • BytesWarning:bytes和bytearray相关的警告

请注意,Python的不同版本可能会有所不同。上面的列表只是Python 3.10版本中内置异常类型的一个示例,其他版本可能会有所不同。

八、总结

在Python中,异常处理是一种强大的机制,可用于捕获和处理错误。我们可以使用tryexcept语句来捕获异常,并在出现异常时执行特定的代码块。我们还可以使用finally语句在try语句块完成后执行一些代码。如果我们想捕获特定类型的异常,我们可以使用多个except语句,并指定每个异常类型。我们还可以定义自己的异常类,并使用raise语句引发自定义异常。最后,我们还可以使用assert语句检查条件,并在条件不满足时引发异常。通过使用这些异常处理技术,我们可以编写更健壮、可维护和可靠的Python代码。


系列文章

🔥 Python 基础(一):初识 Python
🔥 Python 基础(二):搭建 Python 开发环境
🔥 Python 基础(三):Python 集成开发工具 IDLE
🔥 Python 基础(四):基础语法
🔥 Python 基础(五):变量与常量
🔥 Python 基础(六):基本数据类型
🔥 Python 基础(七):常用运算符
🔥 Python 基础(八):流程控制语句
🔥 Python 基础(九):列表
🔥 Python 基础(十):元组
🔥 Python 基础(十一):集合
🔥 Python 基础(十二):字典
🔥 Python 基础(十三):函数
🔥 Python 基础(十四):类和对象
🔥 Python 基础(十五):模块
🔥 Python 基础(十六):包
🔥 Python 基础(十七):库

热门专栏

👍 《Python入门核心技术》
👍 《IDEA 教程:从入门到精通》
👍 《Java 教程:从入门到精通》
👍 《MySQL 教程:从入门到精通》
👍 《大数据核心技术从入门到精通》

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

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

相关文章

P3183 [HAOI2016] 食物链

题目描述 如图所示为某生态系统的食物网示意图&#xff0c;据图回答第 1 小题 现在给你 n 个物种和 m 条能量流动关系&#xff0c;求其中的食物链条数。物种的名称为从 1 到 n 编号 M 条能量流动关系形如 1,2,3​,…,am−1​,bm−1​,am​,bm​。其中 ai​ 和 bi​ 表示能量从物…

《零基础入门学习Python》第067讲:GUI的终极选择:Tkinter4

今天我们来学习 Entry 组件&#xff0c;也就是我们平时所说的 输入框。 输入框是跟程序打交道的途径&#xff0c;比如 程序要求你输入 账号 和 密码。那么它就要提供两个输入框&#xff0c;并且接收密码的输入框还会用 星号 * 将实际的内容给隐藏起来。 我们学了还几个 tkint…

uniapp 微信小程序 navigationBarBackgroundColor 标题栏颜色渐变

大体思路&#xff1a; 第一步&#xff1a;“navigationStyle”:“custom” 第二步&#xff1a; template内 重点&#xff1a;给view添加ref“top” 第三步&#xff1a;添加渐变色样式 1、pages.json {"path" : "pages/user/user","style" : …

FAQ文档的重点注意事项!别踩坑了

在很多优秀的大企业中&#xff0c;FAQ文档是企业运营管理中不可或缺的重要部分。但是也仅限大企业&#xff0c;很多企业目前还是没有这个意识的。一方面原因是因为缺乏这个客户服务的意识&#xff0c;另一方面也和技术水平不足有关。但是其实现在有不少的第三方搭建平台可以帮助…

L---泰拉瑞亚---2023河南萌新联赛第(三)场:郑州大学

链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 来源&#xff1a;牛客网 示例1 输入 1 10 3 5 输出 3 说明 只有一把回旋镖&#xff0c;你可以先打两次伤害为3的&#xff0c;再打一次倾尽全力的&#xff0c;造成的伤害为5。总伤害为33511&#xff0c;即可获得胜…

【Java中间件】RocketMQ

RocketMQ 一、MQ概述 Message Queue&#xff0c;是一种提供消息队列服务的中间件。提供了消息生产、存储、消费全过程API的软件系统。 MQ的作用 限流削峰&#xff1a;当用户发送超量请求时&#xff0c;将请求暂存&#xff0c;以便后期慢慢处理。如果不使用MQ暂存直接请求到…

抖音小店开通指南:轻松打造个人电商王国

抖音小店是抖音推出的一个电商平台&#xff0c;为用户提供了开店、上传商品、管理店铺等功能&#xff0c;让用户可以在抖音上直接进行购物。下面不若与众就来谈谈抖音小店的开通的几个步骤&#xff1a; 1. 注册抖音账号&#xff1a;首先&#xff0c;你需要在抖音上注册一个账号…

什么是Koala?

Koala 介绍 koala 是一个前端预处理器语言图形编译工具&#xff0c;支持 Less、Sass、Compass、CoffeeScript&#xff0c;帮助 web 开发者更高效地使用它们进行开发。跨平台运行&#xff0c;完美兼容 windows、linux、mac。 关键特性 多语言支持 支持 Less、Sass、CoffeeSc…

使用PHP实现登录注册功能的完整指南

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;全栈领域新星创作者✌&#xff0c;2023年6月csdn上海赛道top4。多年电商行业从业经验&#xff0c;对系统架构&#xff0c;数据分析处理等大规模应用场景有丰富经验。 &#x1f3c6;本文已收录于PHP专栏&#xff1a;PHP…

无涯教程-jQuery - trigger( event, data )方法函数

trigger(event&#xff0c;[data])方法在每个匹配的元素上触发一个事件。 触发事件不仅限于基于浏览器的事件&#xff0c;还可以触发向bind注册的自定义事件。 trigger( event, [data] ) - 语法 selector.trigger( event, [data] ) 这是此方法使用的所有参数的描述- event…

【技术干货】工业级BLE5.2蓝牙模块SKB378 使用教程,AT指令集

SKB378是一个高度集成的蓝牙5.2模组&#xff0c;可用来在2.4GHz ISM频段内做高速率、短距离无线通信。工业级标准&#xff0c;支持主从模式(1主对8从)&#xff0c;支持串口透传&#xff0c;AT指令控制&#xff0c;且支持AoA蓝牙高精度室内定位&#xff0c;模组内部集成32位ARM …

存储过程——存储函数

1.存储函数 存储函数的弊端&#xff0c;必须要有返回值&#xff0c;能使用存储函数的地方也能使用存储过程。 案例需求 create function fun1(n int) returns int deterministic begindeclare total int default 0;while n>0 doset total : total _n;set n : n - 1;end …

activemq消息中间件

ActiveMQ消息中间件详解 下载地址&#xff1a;https://activemq.apache.org/activemq-5015009-release 1、MQ的产品种类 1.1、消息中间件的特性/共同特性/共同维度 Kafka&#xff08;大数据专用、由java/scala编写&#xff09; API发送和接收MQ的高可用性MQ的集群和容错配置…

【uni-app2.0】实现登录页记住密码功能

使用uni-app的uni.setStorageSync()和uni.getStorageSync()方法来存储和读取密码 在登录页中添加一个记住密码的u-checkbox选项&#xff0c;并在data里面添加一个rememberPwd的布尔值&#xff0c;在每次点击记住密码change的时候来记录用户的选择 <u-checkbox-group place…

Spring Boot 自定义启动画面

文章目录 自定 Banner获取属性设置颜色实操关闭 Banner参考 我们启动项目的之后&#xff0c;会在控制台上看到类似下面的画面&#xff1a; 那么&#xff0c;我们是否可以自定义呢&#xff1f; 肯定可以 自定 Banner 上面的截图信息就是 Banner 信息&#xff0c;我们可以在项目…

JavaScript |(二)JavaScript自定义对象及函数 | 尚硅谷JavaScript基础实战

学习来源&#xff1a;尚硅谷JavaScript基础&实战丨JS入门到精通全套完整版 文章目录 &#x1f4da;自定义对象&#x1f407; 对象的分类&#x1f407;对象基本操作&#x1f407;对象的属性&#x1f407;基本和引用数据类型&#x1f407;对象字面量 &#x1f4da;函数&#…

边写代码边学习之全连接Dense

1. 全连接原理 全连接神经网络&#xff08;Fully Connected Neural Network&#xff09;是一种最基本的神经网络结构&#xff0c;也被称为多层感知器&#xff08;Multilayer Perceptron&#xff0c;MLP&#xff09;。其原理是模拟人脑神经元之间的连接方式&#xff0c;通过多个…

AI视频监控综合管理平台EasyCVR多分屏默认播放协议的配置优化

智能视频监控平台EasyCVR可拓展性强、开放度高&#xff0c;既能作为业务平台使用&#xff0c;也能作为视频能力层被调用和集成。视频监控综合管理平台兼容度高&#xff0c;支持自由调用、支持与第三方集成。在AI能力的接入上&#xff0c;TSINGSEE青犀视频平台可支持AI智能分析网…

SD NAND【商业】

SD NAND【商业】 前言版权推荐SD NAND外观NAND与TF卡的区别雷龙CS SD NAND(贴片式TF卡)性能体验及应用 最后 前言 2023-7-23 16:20:19 因为本人对硬件了解不是很多&#xff0c;所以该篇参考自官方文档。 以下内容源自《【商业】》 仅供学习交流使用 版权 禁止其他平台发布…

linux 学成之路(基础篇)(二十三)MySQL服务(下)

目录 一、用户权限管理概述 二、用户权限类型 三、用户赋予权限 四、删除权限 五、删除用户 一、用户权限管理概述 数据库用户权限管理是数据库系统中非常重要的一个方面&#xff0c;它用于控制不同用户访问和操作数据库的权限范围。数据库用户权限管理可以保护敏感数据和…