logo

第六章:异常处理

作者
Modified on
Reading time
3 分钟阅读:..评论:..

在编程过程中,错误和异常是不可避免的。处理这些异常可以提高程序的稳定性和用户体验。本章将详细介绍 Python 中异常处理的基本概念、常见的异常类型、处理异常的方法以及如何自定义异常。

1. 异常的基本概念

什么是异常?

异常是程序执行过程中,出现的一种非正常情况。它会中断程序的正常流转。Python 提供了丰富的异常类型,帮助开发者识别和处理不同类型的错误。

常见的异常类型

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

  • IndexError: 当试图访问列表中不存在的索引时引发。
  • ValueError: 当函数接收到参数类型正确但值不合适时引发。
  • KeyError: 当访问不存在的字典键时引发。
  • TypeError: 当操作或函数应用于错误的数据类型时引发。
  • ZeroDivisionError: 当尝试除以零时引发。

2. 异常处理

Python 提供了 try-except 语句来捕获和处理异常,从而避免程序因异常而崩溃。

try-except 语句

基本结构

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

示例

try: result = 10 / 0 except ZeroDivisionError: print("除数不能为零!")

try-except-else 语句

try-except-else 语句在没有异常发生时执行 else 语句块中的代码。

结构

try: # 可能引发异常的代码 except 异常类型: # 异常处理代码 else: # 如果没有发生异常,则执行这部分代码

示例

try: result = 10 / 2 except ZeroDivisionError: print("除数不能为零!") else: print("计算成功,结果是:", result)

try-except-finally 语句

finally 语句块中的代码无论是否发生异常都会执行,通常用于释放资源或进行清理操作。

结构

try: # 可能引发异常的代码 except 异常类型: # 异常处理代码 finally: # 无论是否发生异常,都会执行这部分代码

示例

try: file = open("example.txt", "r") content = file.read() except FileNotFoundError: print("文件未找到!") finally: file.close()

3. 自定义异常

在某些情况下,我们可能需要创建自己的异常类,以便更准确地捕获和处理特定错误。

创建自定义异常类

自定义异常类应继承自 Exception 基类。

示例

class CustomError(Exception): """自定义异常类""" pass def check_value(value): if value < 0: raise CustomError("值不能为负数!") try: check_value(-1) except CustomError as e: print("捕获到自定义异常:", e)

在代码中使用自定义异常

通过自定义异常,我们可以在特定条件下引发异常,并在 try-except 块中捕获这些异常。

示例

class AgeError(Exception): """年龄异常类""" pass def validate_age(age): if age < 0 or age > 150: raise AgeError("年龄必须在 0 到 150 之间!") try: validate_age(200) except AgeError as e: print("捕获到年龄异常:", e)

小结

通过本章的学习,我们掌握了 Python 中异常处理的基本概念和方法,包括使用 try-except 语句捕获异常、使用 finally 语句进行清理操作,以及创建和使用自定义异常。这些知识对于编写健壮的 Python 程序至关重要。

如有问题或建议,欢迎在评论区留言讨论。