PythonizeYAML
教程
API
GitHub
  • English
  • 简体中文
教程
API
GitHub
  • English
  • 简体中文
  • API 参考

    • API 参考
    • 加载与导出
    • 文档与样式编辑
    • Pydantic 集成
    • 配置、样式与标签值
    • 错误

错误

异常层级与 PyYAML 一致:包内抛出的每个错误都派生自 YAMLError,因此 except yaml.YAMLError 可以捕获全部。解析侧的错误携带源位置;其余错误描述路径、样式、别名与输出失败。

层级

YAMLError
├── MarkedYAMLError
│   ├── ScannerError
│   ├── ParserError
│   ├── ComposerError
│   └── ConstructorError
├── EmitterError
├── RepresenterError
├── SerializerError
├── PathError
├── StyleError
└── AliasError

MarkedYAMLError

携带 Rust 解析器源位置的错误基类。其 str() 是多行消息,末尾是形如 in "unicode string", line 1, column 7 的位置标记。

  • context —— 正在解析什么,或为 None。
  • context_mark —— 外层结构开始的位置。
  • problem —— 具体问题描述。
  • problem_mark —— 发现问题的位置。
  • note —— 附加说明,或为 None。

ScannerError

词法失败:引号或括号未闭合、当前上下文出现非法字符,或缩进格式错误。

ParserError

token 流不符合 YAML 语法,例如流式序列从未闭合。解析器还强制执行 128 层的嵌套深度上限(与 libyaml 默认值一致):嵌套更深的输入会抛出 ParserError,而不是耗尽调用栈。

ComposerError

文档结构在构造前即不合法:别名 *name 没有匹配的锚点,或期望单个文档的输入中出现了多个文档。

ConstructorError

无法构造值。重复映射键会抛出此错误;安全引擎也会对 !!python/object/apply:... 之类的非标准应用标签抛出此错误。

EmitterError

原生发射器在写出 YAML 文本时失败。

RepresenterError

值无法被表示。安全引擎在 safe_dump() 输入中出现 Tagged 值或自定义应用标签时抛出;把复数这类没有 YAML 表示的值输出到无法表示的位置时也会抛出。

SerializerError

输出前的序列化步骤失败,例如映射键无法被表示:复数可以作为值输出,但用作映射键时会抛出 SerializerError。

PathError

路径不存在。document[key] 对缺失路径,以及在标量节点之下赋值时都会抛出。

>>> yaml.load("a: 1\n")["missing"]
Traceback (most recent call last):
    ...
PathError: no YAML node at path ('missing',)

StyleError

样式请求与值不匹配,或请求本身不合法:非字符串值使用 single/double/literal/folded 样式、对非块标量设置 chomping 或块缩进指示符、注释行缺少 #、标签不以 ! 开头、锚点名非法,或行内注释跨越多行。

AliasError

别名操作无法完成:移除仍被别名引用的节点、移除仍被引用的锚点,或跨两个文档建立别名。

最近更新: 2026/10/3 15:52
Contributors: originalFactor
Prev
配置、样式与标签值