第7节 异常处理

在这一节中,我们将详细介绍 Python 中的异常处理。异常处理是编程中非常重要的一部分,它允许我们在程序运行过程中捕获和处理错误,从而提高程序的健壮性和可靠性。我们将学习如何使用 try...except 语句、finally 子句以及如何抛出异常。

7.1 异常的基本概念

在编程中,异常是指在程序执行过程中发生的错误或异常情况。当程序遇到无法处理的情况时,会抛出一个异常。如果不处理这些异常,程序将会终止执行。

常见的异常类型:

  • SyntaxError :语法错误
  • NameError :尝试访问未定义的变量
  • TypeError :操作或函数应用于不适当类型的对象
  • ValueError :传入无效的参数
  • IndexError :索引超出范围
  • KeyError :字典中不存在指定的键
  • FileNotFoundError :尝试打开不存在的文件
  • IOError :输入/输出操作失败
  • ZeroDivisionError :除数为零

7.2 try...except 语句

try...except 语句用于捕获和处理异常。如果 try 块中的代码抛出异常,except 块中的代码将被执行。

基本语法:

try:
    # 可能会抛出异常的代码
except ExceptionType:
    # 处理异常的代码

示例:

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

捕获多个异常:
可以使用多个 except 块来捕获不同类型的异常。

示例:

try:
    result = 10 / 0
except ZeroDivisionError:
    print("除数不能为零")
except ValueError:
    print("值错误")

捕获所有异常:
可以使用一个通用的 except 块来捕获所有类型的异常。

示例:

try:
    result = 10 / 0
except Exception as e:
    print(f"发生了一个错误: {e}")

7.3 finally 子句

finally 子句无论是否发生异常都会执行,通常用于清理资源,如关闭文件。

基本语法:

try:
    # 可能会抛出异常的代码
except ExceptionType:
    # 处理异常的代码
finally:
    # 无论是否发生异常都会执行的代码

示例:

try:
    file = open("example.txt", "r")
    content = file.read()
    print(content)
except FileNotFoundError:
    print("文件不存在")
finally:
    file.close()
    print("文件已关闭")

7.4 抛出异常

可以使用 raise 语句手动抛出异常。这在某些情况下非常有用,例如验证输入的有效性。

基本语法:

raise ExceptionType("错误信息")

示例:

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

try:
    result = divide(10, 0)
except ZeroDivisionError as e:
    print(f"发生了一个错误: {e}")

7.5 自定义异常

可以定义自己的异常类,继承自 Python 的内置异常类。自定义异常类通常用于特定的错误情况。

基本语法:

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

raise CustomError("这是一个自定义错误")

示例:

class NegativeNumberError(Exception):
    def __init__(self, number):
        self.number = number
        super().__init__(f"数字 {number} 不能为负数")

def process_number(n):
    if n < 0:
        raise NegativeNumberError(n)
    return n * 2

try:
    result = process_number(-5)
except NegativeNumberError as e:
    print(f"发生了一个错误: {e}")

小结

通过本节的学习,你应该已经掌握了 Python 中异常处理的基本方法,包括使用 try...except 语句、finally 子句、抛出异常以及自定义异常。异常处理是编写健壮和可靠程序的重要手段,能够帮助你更好地应对程序运行中可能出现的各种错误情况。下一节我们将继续学习 Python 中的模块与包。

本文由mdnice多平台发布


星火技术
1 声望0 粉丝

« 上一篇
05-函数
下一篇 »
08-模块与包