0Pricing
Python Academy · 课时

理解异常

了解什么是异常,以及 Python 如何引发异常。

理解异常 是 CoddyKit 上的免费 Python Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Python Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Python Academy 课程共包含 4 节课。

介绍

异常是 Python 在运行时发出信号并处理错误的机制。

什么是异常

异常是会中断程序正常流程的事件。发生错误时,Python 会引发异常,例如除以零。
# 1 / 0  # raises ZeroDivisionError
print('exceptions demo')

异常层次结构

所有异常都继承自 BaseException。大多数面向用户的异常都继承自 Exception。具体类型包括 ValueError、TypeError、KeyError 等。
print(issubclass(ValueError, Exception))
print(issubclass(Exception, BaseException))

常见的内置异常

TypeError:类型错误。ValueError:类型正确但值错误。KeyError:字典中缺少指定键。IndexError:列表索引超出范围。AttributeError:不存在该属性。
# Examples:
# int('abc')       -> ValueError
# d['missing']     -> KeyError
# [1,2][9]         -> IndexError
print('common exceptions')

回溯信息

未处理异常时,Python 会打印回溯信息:从底部(最近一次调用)到顶部的调用栈。请学习如何阅读它。
def f(): return 1/0
# f()  # shows traceback
print('traceback demo')

异常对象

每个异常都会携带一条消息。str(e) 或 e.args 会提供描述。您可以在 except 中这样访问它:except ValueError as e。
try:
    int('abc')
except ValueError as e:
    print(type(e).__name__, e)

捕获多种类型

except (TypeError, ValueError): 可以在一个子句中捕获任一类型。
def parse(x):
    try:
        return int(x)
    except (TypeError, ValueError):
        return None
print(parse('abc'), parse(None))

异常组(3.11+)

Python 3.11 新增了 ExceptionGroup,用于表示同时发生的多个异常,并使用 except* 语法处理它们。
# Python 3.11+:
# try: ...
# except* ValueError as eg:
#     print(eg.exceptions)
print('exception group demo')

警告与异常

import warnings; warnings.warn('msg') 会发出警告,而不会引发异常。它适合用于弃用提示和非致命错误。
import warnings
warnings.warn('This is deprecated', DeprecationWarning)
print('warning issued')

sys.exc_info()

在 except 代码块中,sys.exc_info() 会返回 (type, value, traceback),可用于记录完整的异常详细信息。
import sys
try:
    1/0
except:
    exc_type, exc_val, _ = sys.exc_info()
    print(exc_type, exc_val)

异常链

raise NewError('msg') from original_exc 会链接异常。__cause__ 属性会记录它们之间的关联。
try:
    int('abc')
except ValueError as e:
    raise RuntimeError('parse failed') from e

快速检查

使用不存在的键访问字典时,会引发哪个异常?

回顾

异常继承自 BaseException。请从底部向上阅读回溯信息。使用 except as e 捕获异常。常见类型包括 ValueError、TypeError、KeyError、IndexError 和 AttributeError。

继续学习

做得很好!请继续下一课,持续进步。

常见问题解答

「理解异常」课时是免费的吗?

是的 — 「理解异常」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Python Academy 课程的其余内容,请升级到 CoddyKit PRO。 Python Academy 课程共包含 4 节课。

「理解异常」这节课中我会学到什么?

了解什么是异常,以及 Python 如何引发异常。 你通过在浏览器中直接运行的动手代码来练习 Python Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Python Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Python Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。

「理解异常」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Python Academy 课中编写并运行代码吗?

能。每节 Python Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 理解异常
  2. try / except / else / finally
  3. 引发与重新引发异常
  4. 自定义异常类
← 返回 Python Academy