# LDAP 错误代码如何映射到 JNDI 异常

> 原文： [https://docs.oracle.com/javase/tutorial/jndi/ldap/exceptions.html](https://docs.oracle.com/javase/tutorial/jndi/ldap/exceptions.html)

LDAP 定义了一组状态代码，这些代码随 LDAP 服务器发送的 LDAP 响应一起返回（参见 [RFC 2251](http://www.ietf.org/rfc/rfc2251.txt) ）。在 JNDI 中，错误条件表示为已检查的异常，它们是 [`NamingException`](https://docs.oracle.com/javase/8/docs/api/javax/naming/NamingException.html)的子类。有关 JNDI 异常类的概述，请参见[命名异常](../ops/exception.html)部分。

LDAP 服务提供程序将从 LDAP 服务器接收的 LDAP 状态代码转换为 `NamingException` 的相应子类。下表显示了 LDAP 状态代码和 JNDI 异常之间的映射。

| LDAP 状态代码 | 含义 | 例外或行动 |
| --- | --- | --- |
| 0 | 成功 | 报告成功。 |
| 1 | 操作错误 | [`NamingException`](https://docs.oracle.com/javase/8/docs/api/javax/naming/NamingException.html) |
| 2 | 协议错误 | [`CommunicationException`](https://docs.oracle.com/javase/8/docs/api/javax/naming/CommunicationException.html) |
| 3 | 超出时限。 | [`TimeLimitExceededException`](https://docs.oracle.com/javase/8/docs/api/javax/naming/TimeLimitExceededException.html) |
| 4 | 超出尺寸限制。 | [`SizeLimitExceededException`](https://docs.oracle.com/javase/8/docs/api/javax/naming/SizeLimitExceededException.html) |
| 五 | 比较假。 | 由 [`DirContext.search（）`](https://docs.oracle.com/javase/8/docs/api/javax/naming/directory/DirContext.html#search-javax.naming.Name-javax.naming.directory.Attributes-) 使用。不会生成异常。 |
| 6 | 比较真实。 | 由 [`DirContext.search（）`](https://docs.oracle.com/javase/8/docs/api/javax/naming/directory/DirContext.html#search-javax.naming.Name-javax.naming.directory.Attributes-) 使用。不会生成异常。 |
| 7 | 不支持身份验证方法。 | [`AuthenticationNotSupportedException`](https://docs.oracle.com/javase/8/docs/api/javax/naming/AuthenticationNotSupportedException.html) |
| 8 | 需要强身份验证。 | [`AuthenticationNotSupportedException`](https://docs.oracle.com/javase/8/docs/api/javax/naming/AuthenticationNotSupportedException.html) |
| 9 | 返回部分结果。 | 如果环境属性`“java.naming.referral”`设置为`“忽略”`或错误内容不包含引用，则抛出 [`PartialResultException`](https://docs.oracle.com/javase/8/docs/api/javax/naming/PartialResultException.html)。否则，使用内容来构建引荐。 |
| 10 | 转介遇到了。 | 如果环境属性`“java.naming.referral”`设置为`“忽略”`，则忽略。如果属性设置为`“throw”`，则抛出 [`ReferralException`](https://docs.oracle.com/javase/8/docs/api/javax/naming/ReferralException.html)。如果属性设置为`“跟随”`，则 LDAP 提供程序将处理引用。如果超出`“java.naming.ldap.referral.limit”`属性，则抛出 [`LimitExceededException`](https://docs.oracle.com/javase/8/docs/api/javax/naming/LimitExceededException.html)。 |
| 11 | 超出管理限制。 | [`LimitExceededException`](https://docs.oracle.com/javase/8/docs/api/javax/naming/LimitExceededException.html) |
| 12 | 请求不可用的关键扩展。 | [`OperationNotSupportedException`](https://docs.oracle.com/javase/8/docs/api/javax/naming/OperationNotSupportedException.html) |
| 13 | 需要保密。 | [`AuthenticationNotSupportedException`](https://docs.oracle.com/javase/8/docs/api/javax/naming/AuthenticationNotSupportedException.html) |
| 14 | SASL 绑定正在进行中。 | 在身份验证期间由 LDAP 提供程序内部使用。 |
| 16 | 没有这样的属性。 | [`NoSuchAttributeException`](https://docs.oracle.com/javase/8/docs/api/javax/naming/directory/NoSuchAttributeException.html) |
| 17 | 未定义的属性类型。 | [`InvalidAttributeIdentifierException`](https://docs.oracle.com/javase/8/docs/api/javax/naming/directory/InvalidAttributeIdentifierException.html) |
| 18 | 不合适的匹配 | [`InvalidSearchFilterException`](https://docs.oracle.com/javase/8/docs/api/javax/naming/directory/InvalidSearchFilterException.html) |
| 19 | 约束违规。 | [`InvalidAttributeValueException`](https://docs.oracle.com/javase/8/docs/api/javax/naming/directory/InvalidAttributeValueException.html) |
| 20 | 已在使用的属性或值。 | [`AttributeInUseException`](https://docs.oracle.com/javase/8/docs/api/javax/naming/directory/AttributeInUseException.html) |
| 21 | 无效的属性语法。 | [`InvalidAttributeValueException`](https://docs.oracle.com/javase/8/docs/api/javax/naming/directory/InvalidAttributeValueException.html) |
| 32 | 没有这样的对象存在。 | [`NameNotFoundException`](https://docs.oracle.com/javase/8/docs/api/javax/naming/NameNotFoundException.html) |
| 33 | 别名问题 | [`NamingException`](https://docs.oracle.com/javase/8/docs/api/javax/naming/NamingException.html) |
| 34 | DN 语法无效。 | [`InvalidNameException`](https://docs.oracle.com/javase/8/docs/api/javax/naming/InvalidNameException.html) |
| 35 | 是一片叶子。 | 由 LDAP 提供程序使用;通常不会产生异常。 |
| 36 | 别名解除引用问题 | [`NamingException`](https://docs.oracle.com/javase/8/docs/api/javax/naming/NamingException.html) |
| 48 | 身份验证不当 | [`AuthenticationNotSupportedException`](https://docs.oracle.com/javase/8/docs/api/javax/naming/AuthenticationNotSupportedException.html) |
| 49 | 无效证件 | [`AuthenticationException`](https://docs.oracle.com/javase/8/docs/api/javax/naming/AuthenticationException.html) |
| 50 | 访问权限不足 | [`NoPermissionException`](https://docs.oracle.com/javase/8/docs/api/javax/naming/NoPermissionException.html) |
| 51 | 忙 | [`ServiceUnavailableException`](https://docs.oracle.com/javase/8/docs/api/javax/naming/ServiceUnavailableException.html) |
| 52 | 不可用 | [`ServiceUnavailableException`](https://docs.oracle.com/javase/8/docs/api/javax/naming/ServiceUnavailableException.html) |
| 53 | 不愿意表演 | [`OperationNotSupportedException`](https://docs.oracle.com/javase/8/docs/api/javax/naming/OperationNotSupportedException.html) |
| 54 | 检测到循环。 | [`NamingException`](https://docs.oracle.com/javase/8/docs/api/javax/naming/NamingException.html) |
| 64 | 命名违规 | [`InvalidNameException`](https://docs.oracle.com/javase/8/docs/api/javax/naming/InvalidNameException.html) |
| 65 | 对象类违规 | [`SchemaViolationException`](https://docs.oracle.com/javase/8/docs/api/javax/naming/directory/SchemaViolationException.html) |
| 66 | 不允许在非叶子上。 | [`ContextNotEmptyException`](https://docs.oracle.com/javase/8/docs/api/javax/naming/ContextNotEmptyException.html) |
| 67 | RDN 上不允许。 | [`SchemaViolationException`](https://docs.oracle.com/javase/8/docs/api/javax/naming/directory/SchemaViolationException.html) |
| 68 | 进入已经存在。 | [`NameAlreadyBoundException`](https://docs.oracle.com/javase/8/docs/api/javax/naming/NameAlreadyBoundException.html) |
| 69 | 禁止对象类修改。 | [`SchemaViolationException`](https://docs.oracle.com/javase/8/docs/api/javax/naming/directory/SchemaViolationException.html) |
| 71 | 影响多个 DSA。 | [`NamingException`](https://docs.oracle.com/javase/8/docs/api/javax/naming/NamingException.html) |
| 80 | 其他 | [`NamingException`](https://docs.oracle.com/javase/8/docs/api/javax/naming/NamingException.html) |