我想知道什麼是最優雅的方式來處理依賴於條件導入的異常。 例如:如何處理依賴條件導入的異常?
import ldap
try:
...
l = ldap.open(...)
l.simple_bind_s(...)
...
except ldap.INVALID_CREDENTIALS, e:
pass
except ldap.SERVER_DOWN, e:
pass
在真實的場景中(這使我想到這個的),我們有一個「登錄」頁面的CherryPy服務器。而登錄方法做了很多事情 - 其中之一是身份驗證。
但是,我可以使用LDAP以外的其他方法來進行身份驗證,在這種情況下,我根本不想導入ldap。
但是,如果我使'import ldap'語句有條件(例如,它只在配置文件中的USE_LDAP值爲True時才被導入),那麼我必須對'except'進行一些操作。問題是:什麼?
捕獲一個泛型異常,使用if語句來檢查我們是否使用LDAP(即,ldap被導入),然後使用isinstance來檢查Exception是否是正確的類型(ldap.INVALID_CREDENTIALS)?
嘗試將依賴於ldap的代碼集中在一個地方並重新引發用戶定義的異常,最終在登錄方法中被捕獲?
作爲最pythonic什麼你會建議?
是的,這可能是最好的方法。謝謝。 – 2010-02-24 15:41:07