Python 基础入门 Day41:异常处理(Exception Handling)基础与实践

43次阅读
没有评论

共计 1470 个字符,预计需要花费 4 分钟才能阅读完成。

在编写 Python 程序的过程中, 异常处理 是一个不可或缺的部分。它能帮助我们优雅地应对运行时可能出现的问题,比如文件找不到、除以零、类型错误等,防止程序崩溃,并提供友好的提示。


目录

  1. 什么是异常(Exception)
  2. 常见异常类型
  3. 使用 try...except 捕获异常
  4. elsefinally 的用法
  5. 自定义异常类
  6. 小结与练习

一、什么是异常?

异常是指程序运行过程中发生的错误,它会导致程序中断执行。Python 提供了内建的异常处理机制,可以让我们“捕捉”这些错误,并做出相应处理。

示例:一个除零异常

a = 10
b = 0
print(a / b)  # ZeroDivisionError: division by zero

程序在运行到 a / b 时抛出了一个异常,并终止执行。


二、常见异常类型

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

异常类型 含义说明
ZeroDivisionError 除以零错误
TypeError 类型不匹配
ValueError 错误的值
IndexError 下标越界
KeyError 字典中找不到指定键
FileNotFoundError 文件不存在
ImportError 模块导入失败

三、使用 try...except 捕获异常

我们可以使用 try...except 结构来捕获并处理这些异常。

基本语法:

try:
    # 可能出错的代码
except 异常类型:
    # 出错后的处理逻辑

示例:

try:
    num = int(input("请输入一个整数:"))
    result = 10 / num
    print("结果是:", result)
except ZeroDivisionError:
    print("不能除以 0!")
except ValueError:
    print("请输入有效的整数!")

四、elsefinally 的用法

  • else:如果 try 中的代码没有抛出异常,则执行 else 语句块。
  • finally:无论是否抛出异常,都会执行 finally,通常用于清理资源(如关闭文件、关闭数据库连接等)。

示例:

try:
    file = open("data.txt", "r")
    content = file.read()
except FileNotFoundError:
    print("文件不存在。")
else:
    print("文件内容:", content)
finally:
    if 'file' in locals():
        file.close()
        print("文件已关闭。")

五、自定义异常类

在某些场景下,我们可以自定义异常类来表达更具体的问题。

示例:

class PasswordTooShortError(Exception):
    """密码太短异常"""
    pass

def set_password(pwd):
    if len(pwd) < 6:
        raise PasswordTooShortError("密码长度不能少于 6 位")
    print("密码设置成功")

try:
    set_password("123")
except PasswordTooShortError as e:
    print("发生异常:", e)

六、小结与练习

✅ 今日小结

  • 异常是程序运行中的错误。
  • 通过 try...except 可以捕捉并处理异常,防止程序崩溃。
  • else 用于处理没有异常的情况,finally 用于清理工作。
  • 可以创建自定义异常类以增强程序可读性和可维护性。

💡 今日练习

  1. 编写一个函数,接受两个数字作为参数,计算除法结果,要求使用异常处理确保不会因除以零而出错。
  2. 写一个程序,从用户输入文件名并尝试读取文件内容,使用异常处理处理文件不存在的情况。
  3. 实现一个自定义异常,当用户输入的年龄小于 0 或大于 150 时,抛出 InvalidAgeError
正文完
 0
评论(没有评论)