异常处理

异常处理是 Python 编程中的重要概念之一,用于捕获和处理程序运行时可能出现的错误。通过合理的异常处理,程序可以避免因错误而中断,从而提升代码的健壮性和用户体验。本节将介绍异常的基本概念、常见的异常类型以及如何使用异常处理机制来编写健壮的 Python 程序。


1. 什么是异常

异常是程序运行时发生的错误,当 Python 解释器遇到异常时,会中断程序的执行,并显示错误信息。如果我们希望程序在出现异常时能够优雅地处理,就需要进行异常捕获和处理。

常见的异常类型包括:

  • ZeroDivisionError:除数为 0 时引发的异常。
  • FileNotFoundError:尝试访问不存在的文件时引发的异常。
  • IndexError:访问列表或元组中不存在的索引时引发的异常。
  • KeyError:访问字典中不存在的键时引发的异常。
  • TypeError:数据类型不匹配时引发的异常。

2. 使用 try-except 语句

可以使用 try-except 语句捕获异常,并防止程序因异常而崩溃。try 块中的代码会被尝试执行,如果引发异常,则跳转到对应的 except 块进行处理。

try:
    num = int(input("请输入一个整数: "))
    result = 10 / num
    print(f"结果是: {result}")
except ZeroDivisionError:
    print("错误:除数不能为 0!")
except ValueError:
    print("错误:请输入有效的整数!")
2.1 捕获多个异常

在同一个 try 语句中,可以捕获多个不同类型的异常。每个 except 块对应不同的异常类型。

try:
    value = int(input("请输入一个整数: "))
    result = 10 / value
    print(f"结果是: {result}")
except (ZeroDivisionError, ValueError) as e:
    print(f"发生错误: {e}")

3. 使用 else 语句

如果 try 块中的代码没有引发异常,则会执行 else 块中的代码。

try:
    value = int(input("请输入一个整数: "))
    result = 10 / value
except ZeroDivisionError:
    print("错误:除数不能为 0!")
except ValueError:
    print("错误:请输入有效的整数!")
else:
    print(f"结果是: {result}")

4. 使用 finally 语句

finally 块中的代码无论是否引发异常,都会执行,通常用于释放资源,如关闭文件或网络连接。

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

5. 自定义异常

Python 允许我们自定义异常类,并在程序中引发自定义的异常。自定义异常类需要继承自 Exception 类。

class CustomError(Exception):
    """自定义异常类"""
    def __init__(self, message):
        self.message = message

# 在程序中引发自定义异常
def check_value(value):
    if value < 0:
        raise CustomError("值不能为负数!")
    else:
        print(f"输入值是: {value}")

try:
    check_value(-5)
except CustomError as e:
    print(f"捕获到自定义异常: {e.message}")

6. raise 关键字

raise 关键字可以显式地引发异常,无论是内置异常还是自定义异常。

def divide(a, b):
    if b == 0:
        raise ZeroDivisionError("除数不能为 0!")
    return a / b

try:
    result = divide(10, 0)
except ZeroDivisionError as e:
    print(f"捕获到异常: {e}")

7. assert 语句

assert 语句用于在程序中插入调试断言。它检查一个条件,如果条件为 False,则引发 AssertionError 异常。

def calculate_square_root(x):
    assert x >= 0, "输入必须是非负数"
    return x ** 0.5

print(calculate_square_root(25))  # 正常输出:5.0
print(calculate_square_root(-4))  # 引发 AssertionError

8. 小结

异常处理是编写健壮 Python 程序的重要工具。通过合理使用 try-except 语句,我们可以有效捕获并处理程序运行中的错误,避免程序崩溃。同时,使用 finally 语句保证资源的释放,通过 assert 和自定义异常提升代码的可维护性。掌握异常处理技巧能够帮助我们编写更稳定、可靠的代码。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部