Python Exception处理

本文详细介绍了Python中的异常处理,包括异常捕获、异常抛出、异常自定义和扩展清理操作预定义。通过示例展示了如何处理语法错误和运行时异常,以及如何自定义异常和使用`with`语句确保资源的妥善关闭。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python中的错误处理分为两类:语法错误和异常处理。语法错误一般是指由于python语句、表达式、函数等存在书写格式活语法规则上的错误抛出的异常,如python常见的缩进控制,若同层次的执行语句存在缩进不同,会报语法错误(SyntaxError),一般在ide中会有明显的提示,其属于编译阶段的错误,一般是导致解析错误抛出错误;异常处理一般是指python语法格式正确,但在运行过程出现错误,错误类型交由python中的内建异常进行说明,回朔处理,这种类型的处理一般都是出现在运行阶段,是需要我们处理的。如下给出两种错误异常的简单案例.

#语法异常,导致的解析错误

str="just show syntax type error."
 print str,"\n"

 File "exception.py", line 21
   print str,"\n"
   ^
IndentationError: unexpected indent




#内置异常处理
### Python 中 `Exception` 类的使用方法和功能 #### 1. 基本概念 在 Python 中,`Exception` 是所有内置异常类的基类。它本身并不是一个具体的异常类型,而是用来捕获通用异常的一个类别。所有的标准异常(如 `ValueError`, `TypeError`, `IOError` 等)都直接或间接继承自 `Exception`[^1]。 #### 2. 创建并抛出异常 开发人员可以通过继承 `Exception` 来定义自己的异常类,并通过 `raise` 关键字触发这些异常。例如: ```python class MyCustomException(Exception): """自定义异常""" pass def test_exception(value): if value < 0: raise MyCustomException("输入值小于零") try: test_exception(-1) except MyCustomException as e: print(f"捕捉到异常: {e}") ``` 在这个例子中,我们定义了一个新的异常类型 `MyCustomException` 并在适当条件下引发它。随后利用 `try...except` 结构对其进行捕获和处理[^2]。 #### 3. 捕捉异常的变化 需要注意的是,在 Python 3.x 版本里,尝试用逗号分割的方式绑定异常实例已经被废弃,必须改用关键字 `as` 替代[^1]。比如下面这段代码展示了正确的做法: ```python try: int('abc') except ValueError as ve: print(f"发生数值转换错误:{ve}") ``` 另外值得注意的是,从 Python 3 开始,`Exception` 对象不再拥有名为 `message` 的成员变量,因此如果需要传递额外的信息给异常对象,则应该覆盖其初始化方法或者直接传参[^1]。 #### 4. 处理多种类型的异常 在一个程序段落可能会遇到不同种类的异常时,可以指定多个 `except` 子句分别对应每种可能发生的异常情形。例如: ```python try: with open('nonexistent_file', 'r') as file_handler: content = file_handler.read() except FileNotFoundError as fnfe: print(f"文件未找到错误:{fnfe}") except IOError as ioe: print(f"I/O 错误:{ioe}") else: print("成功执行无异常部分") finally: print("无论是否有异常都会被执行的部分") ``` 此片段演示了如何针对特定类型的异常采取相应的措施,同时也体现了 `else` 和 `finally` 这两个可选分支的作用[^2]。 --- ### 总结 通过对上述内容的学习可知,`Exception` 在 Python 编程语言中的角色至关重要——它是构建健壮应用程序不可或缺的一部分;无论是简单的数据验证还是复杂的业务逻辑控制流管理都需要借助于完善的异常机制来保障系统的稳定性和可靠性[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

胖蔡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值