测试开发技术网站
博客
设计
设计
开发
Python
测试
unittest
运维
Linux基础应用
CI/CD
CI/CD
数据库
数据库
云计算
云计算
云原生
云原生
爬虫
爬虫
数据分析
数据分析
人工智能
人工智能
登录
注册
Python异常处理:try-except结构、自定义异常、finally用法
收藏本文
作者:redrose2100 类别: 日期:2023-11-07 08:17:18 阅读:356 次 消耗积分:0 分
[TOC] ![](https://redrose2100.oss-cn-hangzhou.aliyuncs.com/img/86eddc30-7c4e-11ee-beb1-0242ac110004.png) Python异常处理是一种跨越程序运行时错误的策略。它不仅使得代码更加健壮,同时也为程序提供了优雅恢复或终止的途径。在Python中,异常处理主要是通过`try-except`结构来实现的。接下来,我们将一步步探讨`try-except`结构、内置异常、自定义异常以及`finally`的用法。 ### try-except结构 Python使用`try-except`块来处理异常。`try`块内的代码是正常执行的代码,如果执行过程中发生异常,则执行流将转到`except`块。 #### 捕获单一异常 当你知道可能会引发特定异常时,可以捕获该异常: ```python try: result = 10 / 0 except ZeroDivisionError: print("Caught a division by zero!") ``` #### 捕获多种异常 可以在一个`except`子句中指定一个异常元组来同时捕获多种异常: ```python try: dictionary = {"key": "value"} print(dictionary["non_existent_key"]) except (KeyError, TypeError) as e: print(f"Caught an exception: {e}") ``` #### 多次每次捕获一种异常 你可以使用多个`except`子句来捕获不同的异常,这将有助于你对每种异常类型做出不同的反应: ```python try: list = [1, 2, 3] print(list[3]) except IndexError: print("Caught an index error!") except Exception as e: print(f"Caught an unexpected exception: {e}") ``` ### 内置异常 Python有多种内置异常,这些异常涵盖了各种常见的错误场景。以下是20种最常见的内置异常类型: 1. `Exception` - 常见的基类异常 2. `AttributeError` - 属性引用或赋值失败时引发 3. `IOError` - 输入/输出操作失败时引发 4. `ImportError` - 导入模块/对象失败时引发 5. `IndexError` - 序列中没有此索引时引发 6. `KeyError` - 映射中没有这个键时引发 7. `KeyboardInterrupt` - 用户中断执行(通常是输入^C) 8. `NameError` - 找不到局部或全局名称时引发 9. `OSError` - 操作系统不能执行操作时引发 10. `SyntaxError` - 语法错误时引发 11. `TypeError` - 操作或函数应用于不适当类型的对象时引发 12. `ValueError` - 操作或函数接收到具有正确类型但不适当的值时引发 13. `ZeroDivisionError` - 除以零时引发 14. `FileNotFoundError` - 请求的文件未找到时引发 15. `MemoryError` - 操作耗尽内存时引发 16. `StopIteration` - 迭代器没有更多的值时引发 17. `TimeoutError` - 超时操作未完成时引发 18. `ReferenceError` - 弱引用试图访问已经垃圾回收了的对象时引发 19. `SystemExit` - 解释器请求退出 20. `OverflowError` - 算术运算超出范围时引发 ### 自定义异常 你可以通过继承`Exception`类来创建自定义异常: ```python class MyCustomError(Exception): def __init__(self, message): self.message = message ``` 使用自定义异常: ```python try: raise MyCustomError("Something went wrong!") except MyCustomError as e: print(f"Caught custom exception: {e.message}") ``` ### finally用法 无论是否发生异常,`finally`块中的代码都会执行。这在你需要释放资源,如关闭文件或网络连接时非常有用。 当函数有返回值时,`finally`块仍然会执行,但不会改变函数的返回值
始终坚持开源开放共享精神,同时感谢您的充电鼓励和支持!
版权所有,转载本站文章请注明出处:redrose2100, http://blog.redrose2100.com/article/700
上一篇:
Python文件操作:文件读写、文件对象方法、with语句
下一篇:
Python类与对象:类的定义、实例化、方法、属性、构造函数
搜索
个人成就
出版书籍
《Pytest企业级应用实战》
测试开发技术全栈公众号
测试开发技术全栈公众号
DevOps技术交流微信群
加微信邀请进群
常用网站链接
开源软件洞察
云原生技术栈全景图
Python语言官方文档
Golang官方文档
Docker官方文档
Jenkins中文用户手册
Scrapy官方文档
VUE官方文档
Harbor官方文档
openQA官方文档
云原生开源社区
开源中国
Kubernetes中文文档
Markdown语法官方教程
Kubernetes中文社区
Kubersphere官方文档
BootStrap中文网站
JavaScript中文网
NumPy官方文档
Pandas官方文档
GitLink确实开源网站
数据库排名网站
编程语言排名网站
SEO综合查询网站
数学加减法练习自动生成网站
Kickstart Generator
文章分类
最新文章
最多阅读
特别推荐
×
Close
登录
注册
找回密码
登录邮箱:
登录密码:
图片验证码:
注册邮箱:
注册密码:
邮箱验证码:
发送邮件
注册邮箱:
新的密码:
邮箱验证码:
发送邮件