DukeDuke
主页
文档转换
关于我们
主页
文档转换
关于我们
  • 什么是Python
  • Python简介
  • Python安装
  • Python基础语法
  • Python数据类型
  • Python数字
  • Python字符串
  • Python列表
  • Python元组
  • Python字典
  • Python日期时间
  • Python文件操作
  • Python异常处理
  • Python函数
  • Python类
  • Python模块
  • Python包
  • Python多线程
  • Python面向对象
  • Python爬虫
  • Django web框架

Python 异常处理

1. 异常处理基础

异常处理是 Python 中处理程序运行时错误的重要机制。当程序遇到错误时,会抛出(raise)一个异常,如果不处理这个异常,程序就会终止。通过异常处理,我们可以优雅地处理这些错误情况。

2. try-except 语句

基本的异常处理语法如下:

try:
    # 可能发生异常的代码
    result = 10 / 0
except ZeroDivisionError:
    # 处理特定的异常
    print("除数不能为零")
except Exception as e:
    # 处理其他所有异常
    print(f"发生错误:{e}")
else:
    # 如果没有异常发生,执行这里的代码
    print("计算成功")
finally:
    # 无论是否发生异常,都会执行这里的代码
    print("清理工作")

3. 常见异常类型

Python 内置了许多异常类型,以下是一些常见的异常:

  • SyntaxError: 语法错误
  • NameError: 访问未定义的变量
  • TypeError: 类型错误
  • ValueError: 值错误
  • IndexError: 索引错误
  • KeyError: 字典键错误
  • FileNotFoundError: 文件未找到
  • ZeroDivisionError: 除零错误
  • AttributeError: 属性错误

4. 自定义异常

我们可以创建自己的异常类:

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

# 使用自定义异常
try:
    raise CustomError("这是一个自定义错误")
except CustomError as e:
    print(e.message)

5. 异常处理最佳实践

  1. 具体异常优先:捕获具体的异常类型,而不是笼统的 Exception
  2. 避免空的 except 块:至少记录异常信息
  3. 合理使用 finally:确保资源正确释放
  4. 异常链:使用 raise from 保留原始异常信息
  5. 避免过度使用异常:不要用异常处理来控制正常的程序流程

6. 上下文管理器(with 语句)

Python 的 with 语句提供了更优雅的资源管理方式:

# 文件操作示例
try:
    with open('file.txt', 'r') as f:
        content = f.read()
except FileNotFoundError:
    print("文件不存在")

7. 异常处理示例

7.1 文件操作异常处理

def read_file(filename):
    try:
        with open(filename, 'r', encoding='utf-8') as f:
            return f.read()
    except FileNotFoundError:
        print(f"文件 {filename} 不存在")
    except PermissionError:
        print("没有权限读取文件")
    except Exception as e:
        print(f"发生未知错误:{e}")

7.2 数值计算异常处理

def safe_division(a, b):
    try:
        return a / b
    except ZeroDivisionError:
        print("除数不能为零")
        return None
    except TypeError:
        print("参数类型错误")
        return None

8. 调试技巧

  1. 使用 traceback 模块获取详细的异常信息
  2. 使用 logging 模块记录异常信息
  3. 在开发环境中使用 pdb 进行调试
import traceback
import logging

try:
    # 可能出错的代码
    result = 10 / 0
except Exception as e:
    logging.error(traceback.format_exc())

9. 总结

异常处理是 Python 编程中的重要组成部分,良好的异常处理可以:

  • 提高程序的健壮性
  • 改善用户体验
  • 便于调试和维护
  • 确保资源正确释放

记住,异常处理不是用来控制正常程序流程的,而是用来处理异常情况的。合理使用异常处理机制,可以让我们的程序更加健壮和可靠。

最近更新:: 2026/4/17 13:21
Contributors: Duke
Prev
Python文件操作
Next
Python函数