为什么ldap.SERVER_DOWN会捕获所有异常?

时间:2011-07-11 14:36:48

标签: python exception ldap

我有一些代码如下,我正在尝试连接一个不存在的服务器来测试超时。在120秒之后,程序退出代码5.以及更多,我从局域网断开连接以测试connect_error,它再次退出代码5。为什么ldap.SERVER_DOWN会捕获所有异常?我该如何测试其他例外?

try:
    ....

    l.simple_bind_s(user, password)

except ldap.CONNECT_ERROR, e:
    sys.exit(1)

except ldap.BUSY, e:
    sys.exit(2)

except ldap.OPT_NETWORK_TIMEOUT, e:
    sys.exit(3)

except ldap.TIMEOUT, e: 
    sys.exit(4)

except ldap.SERVER_DOWN, e:
    sys.exit(5)

2 个答案:

答案 0 :(得分:1)

基于python-ldap源,看起来只有NonblockingLDAPObject可以引发异常ldap.TIMEOUT。您不应该为SimpleLDAPObject处理它。

答案 1 :(得分:0)

要测试BUSY,您可以绑定到正常工作的LDAP服务器,然后不要关闭(取消绑定)连接。当您再次尝试连接时,服务器应该抛出BUSY错误。