Skip to content
编程开物
编程开物

一段代码,一段Prompt,一物成型。 探索编程、AI应用、架构设计与产品设计,分享工程实践,记录技术学习、工作总结与产品创造。

  • 首页
  • 编程基础
  • 数据与AI
    • 数据工程
    • AI基础理论
    • AI实践应用
  • 系统架构
    • 传统应用架构设计
    • AI应用架构设计
  • 项目管理
  • 产品设计
  • 技术教程
  • 行业动态
  • 编程笔记
  • 实用技巧
  • 关于我
编程开物

一段代码,一段Prompt,一物成型。 探索编程、AI应用、架构设计与产品设计,分享工程实践,记录技术学习、工作总结与产品创造。

《Python编程》016 – Python异常处理基础知识

编码者, 2023年8月8日2023年8月8日

异常是程序运行时可能发生的意外事件,例如除零错误或文件未找到错误。这些异常可能导致程序崩溃,因此正确处理异常非常重要。在本文中,我们将学习如何在Python中处理异常的基础知识。

异常的类型

在Python中,有两种主要类型的异常:内置异常和用户自定义异常。内置异常是当Python解释器遇到错误时自己引发的异常,例如ZeroDivisionError或FileNotFoundError。用户自定义异常是您在代码中自己定义的异常。

基本异常处理

在Python中处理异常的最基本方法是使用try-except语句块。下面是一个例子:

try:
    # 可能引发异常的代码
    x = 1 / 0
except:
    # 处理异常的代码
    print("发生了错误。")

在这个例子中,我们使用try-except语句块来处理当我们尝试将1除以0时可能引发的ZeroDivisionError。如果引发了异常,将执行except块中的代码,打印出”发生了错误”的消息。

捕获特定异常

除了使用通用的except块捕获所有异常之外,您还可以使用except语句捕获特定的异常。下面是一个例子:

try:
    # 可能引发异常的代码
    file = open("myfile.txt")
except FileNotFoundError:
    # 处理FileNotFoundError的代码
    print("文件未找到。")
except:
    # 处理所有其他异常的代码
    print("发生了错误。")

在这个例子中,我们使用try-except语句块来处理当我们尝试打开不存在的文件时可能引发的FileNotFoundError。如果引发了FileNotFoundError,将执行第一个except块中的代码,打印出”文件未找到”的消息。如果引发了其他任何异常,将执行通用的except块中的代码,打印出”发生了错误”的消息。

使用else和finally块

除了try和except块,您还可以使用else和finally块来管理异常处理。

else块在try块中没有引发异常时执行。下面是一个例子:

try:
    # 可能引发异常的代码
    x = 1 / 2
except ZeroDivisionError:
    # 处理ZeroDivisionError的代码
    print("不能除以零。")
else:
    # 如果没有引发异常,执行的代码
    print("结果是:", x)

在这个例子中,我们使用try-except语句块来处理当我们尝试将1除以0时可能引发的ZeroDivisionError。如果没有引发异常,将执行else块中的代码,打印出除法的结果。

finally块无论在try和except块中发生什么都会执行。下面是一个例子:

try:
    # 可能引发异常的代码
    file = open("myfile.txt")
    # 对文件执行一些操作
finally:
    # 无论如何都要执行的代码
    file.close()

在这个例子中,我们使用try-finally语句块来确保文件始终被关闭,无论在try块中发生什么。如果引发异常,finally块仍然会执行,并且文件将被关闭。

抛出异常

您还可以使用raise语句自己抛出异常。下面是一个例子:

x = -5

if x < 0:
    raise ValueError("x不能为负数。")

在这个例子中,如果x为负数,我们会引发一个ValueError异常。raise语句以异常类型作为参数,您可以传递一个消息字符串来提供有关异常的更多信息。

定义自定义异常

您还可以通过创建从Exception类继承的类来定义自定义的自定义异常。下面是一个例子:

class MyException(Exception):
    pass

raise MyException("这是一个自定义异常。")

在这个例子中,我们通过创建一个从Exception类继承的类来定义了一个自定义异常MyException。如果需要,可以传递一个消息字符串来提供关于异常的更多信息。

总结

在本文中,我们学习了Python中异常处理的基础知识。我们了解了如何使用try-except语句块捕获和处理异常,如何捕获特定的异常,以及如何使用else和finally语句块。我们还了解了如何抛出异常和定义自定义异常。正确的异常处理是编写健壮和可靠代码的重要部分,了解这些概念将帮助您编写更好的Python程序。

Post Views: 878
编程笔记 Python ExceptionPython异常

文章导航

Previous post
Next post

发表回复 取消回复

您的邮箱地址不会被公开。 必填项已用 * 标注

站内搜索

微信公众号

广告赞助

近期文章

  • 斯坦福 STORM 学习法:用 AI 深度研究一个主题,构建自己的知识体系
  • 如何使用 Claude 将任何知识的学习速度提升 10 倍【译】
  • Excel 根据数值正负自动设置文字颜色:正数红色、负数绿色
  • 2026 年主流跨端开发框架:Flutter、React Native、KMP 怎么选?
  • 2026 年企业级编程技术栈趋势简报
  • 使用 Jev 构建 Harness [译]
  • 2026年FDE(前沿部署工程师)为什么成了香饽饽?
  • 第 7 章 Tool System:给 AI 装上”手和脚”
  • 第 6 章 Context Engineering:Agent 的”工作内存”
  • 第 5 章 主流 AI Agent 架构模式

近期评论

  • 《AI Agent 架构设计与工程实践指南》——从 LLM、Agent、Harness 到 Mini Claude Code - 编程开物 发表在《第 3 章 AI Agent Loop:现代 AI Agent 背后的核心架构》
  • 《AI Agent 架构设计与工程实践指南》——从 LLM、Agent、Harness 到 Mini Claude Code - 编程开物 发表在《第 4 章 Agent Harness是什么?》
  • 第 4 章 Agent Harness是什么? - 编程开物 发表在《《AI Agent 架构设计与工程实践指南》——从 LLM、Agent、Harness 到 Mini Claude Code》
  • 《AI Agent 架构设计与工程实践指南》——从 LLM、Agent、Harness 到 Mini Claude Code - 编程开物 发表在《第 2 章 LLM Application 的基本架构》
  • 《AI Agent 架构设计与工程实践指南》——从 LLM、Agent、Harness 到 Mini Claude Code - 编程开物 发表在《第 1 章 重新认识 AI Agent》

归档

  • 2026 年 10 月 (2)
  • 2026 年 9 月 (14)
  • 2025 年 8 月 (1)
  • 2025 年 7 月 (1)
  • 2025 年 6 月 (10)
  • 2025 年 5 月 (10)
  • 2025 年 4 月 (5)
  • 2025 年 2 月 (1)
  • 2024 年 12 月 (4)
  • 2024 年 11 月 (7)
  • 2024 年 9 月 (1)
  • 2024 年 8 月 (4)
  • 2024 年 7 月 (1)
  • 2024 年 2 月 (1)
  • 2023 年 12 月 (3)
  • 2023 年 11 月 (6)
  • 2023 年 10 月 (4)
  • 2023 年 9 月 (2)
  • 2023 年 8 月 (38)
  • 2022 年 2 月 (1)
  • 2022 年 1 月 (13)
  • 2021 年 1 月 (1)
  • 2020 年 10 月 (1)
  • 2020 年 1 月 (1)
  • 2014 年 7 月 (2)

分类

  • IT项目管理 (2)
  • 实用技巧 (3)
  • 技术教程 (8)
  • 数据与AI (12)
    • AI基础理论 (1)
    • AI实践应用 (2)
    • 数据工程 (3)
  • 架构设计 (13)
    • AI应用架构设计 (8)
    • 传统应用架构设计 (2)
  • 编程基础 (2)
  • 编程笔记 (88)
  • 行业动态 (19)
©2026 编程开物 | WordPress Theme by SuperbThemes | 沪ICP备17019044号-3