This document is for an old version of Python that is no longer supported. You should upgrade and read the Python 当前稳定版本的文档.

# 18.1.8. `email.errors`: 异常和缺陷类

以下异常类在 `email.errors` 模块中定义：

exception `email.errors.``MessageError`

  这是 `email` 包可以引发的所有异常的基类。 它源自标准异常 `Exception` 类，这个类没有定义其他方法。

exception `email.errors.``MessageParseError`

  This is the base class for exceptions raised by the `Parser` class. It is derived from `MessageError`.

exception `email.errors.``HeaderParseError`

  Raised under some error conditions when parsing the RFC 2822 headers of a message, this class is derived from `MessageParseError`. It can be raised from the `Parser.parse` or `Parser.parsestr` methods.

  Situations where it can be raised include finding an envelope header after the first RFC 2822 header of the message, finding a continuation line before the first RFC 2822 header is found, or finding a line in the headers which is neither a header or a continuation line.

exception `email.errors.``BoundaryError`

  Raised under some error conditions when parsing the RFC 2822 headers of a message, this class is derived from `MessageParseError`. It can be raised from the `Parser.parse` or `Parser.parsestr` methods.

  Situations where it can be raised include not being able to find the starting or terminating boundary in a multipart/* message when strict parsing is used.

exception `email.errors.``MultipartConversionError`

  当使用 `add_payload()` 将有效负载添加到 `Message` 对象时，有效负载已经是一个标量，而消息的 Content-Type 主类型不是 multipart 或者缺少时触发该异常。 `MultipartConversionError` 多重继承自 `MessageError` 和内置的 `TypeError`。

  由于 `Message.add_payload()` 已被弃用，此异常实际上极少会被引发。 但是如果在派生自 `MIMENonMultipart` 的类 (例如 `MIMEImage`) 的实例上调用 `attach()` 方法也可以引发此异常。

Here’s the list of the defects that the `FeedParser` can find while parsing messages. Note that the defects are added to the message where the problem was found, so for example, if a message nested inside a multipart/alternative had a malformed header, that nested message object would have a defect, but the containing messages would not.

All defect classes are subclassed from `email.errors.MessageDefect`, but this class is not an exception!

2.4 新版功能: All the defect classes were added.

- `NoBoundaryInMultipartDefect` – 一条消息宣称有多个部分，但却没有 boundary 形参。

- `StartBoundaryNotFoundDefect` – 在 Content-Type 标头中宣称的开始边界无法被找到。

- `FirstHeaderLineIsContinuationDefect` – 消息以一个继续行作为其第一个标头行。

- `MisplacedEnvelopeHeaderDefect` - 在标头块中间发现了一个 “Unix From” 标头。

- `MalformedHeaderDefect` – 找到一个缺失了冒号或格式错误的标头。

- `MultipartInvariantViolationDefect` – A message claimed to be a multipart, but no subparts were found. Note that when a message has this defect, its `is_multipart()` method may return false even though its content type claims to be multipart.