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

2 投票
2 回答
1160 浏览
提问于 2025-04-16 21:16

我有一些代码,想要连接一个不存在的服务器来测试超时。经过120秒后,程序以代码5退出。此外,我还断开了局域网连接来测试连接错误,结果又以代码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

要测试是否忙碌,你可以连接到一个正常工作的LDAP服务器,然后不要关闭这个连接。当你再尝试连接的时候,服务器应该会返回一个忙碌的错误。

1

根据python-ldap的源代码,似乎只有NonblockingLDAPObject这个对象会引发ldap.TIMEOUT这个异常。对于SimpleLDAPObject来说,你不需要处理这个异常。

撰写回答