2012-03-08 16 views
1

我想在用戶由於密碼錯誤而未能登錄時發現異常。 所以我做了一個使用imaplib的函數。我輸入了一個錯誤的密碼並獲得了一個帶有錯誤細節的追蹤。 現在我的問題實際上是一般的。您如何從錯誤消息中識別我們在「try and except」主體中必須提及的異常?確定從回溯中使用的異常

這是我的GOT->

>>> count("[email protected]","[email protected]") 

Traceback (most recent call last): 
    File "<pyshell#2>", line 1, in <module> 
    count("[email protected]","[email protected]") 
    File "E:\Arindam\py_progs\Mail Notifier\0.0.19\Mail.py", line 24, in count 
    obj.login(m,p) 
    File "C:\Python27\lib\imaplib.py", line 500, in login 
    raise self.error(dat[-1]) 
error: [AUTHENTICATIONFAILED] Invalid credentials (Failure) 

如果我想打一個嘗試,除非,你會我提到的例外部分?

try: 
    login(mail,pass): 
except ????: 
    something 

問:

1)會有什麼????這裏 。它可以直接從錯誤報告中推斷出來嗎?

2)是否有一個基本的想法來確定我們得到的每個錯誤都必須使用哪些異常?

回答

3

你想用這樣的:

try: 
    ..code that might raise an exception... 
except ExceptionType, e: 
    ...do something... 

在你的情況下,可能需要這樣的:

try: 
    login(mail,pass) 
except imaplib.IMAP4.error, e: 
    print "Ouch -- an error from imaplib!" 

要識別異常的類型,你可以看看它的異常消息。在這種情況下,它只是「錯誤」 - 不幸的是模塊名稱不包括在內。你可以從中更好地瞭解它來自何處:

try: 
    login(mail,pass) 
except Exception, e: 
    print type(e) 
+0

謝謝先生,這樣做的工作...........只是一個問題。除了部分以外,什麼是'e'?我認爲我們只提到「except」旁邊的一個參數。這個「e」有什麼特別的意義嗎? – 2012-03-08 20:10:41

+1

',e'是可選的。如果包含它,那麼你會得到一個名爲'e'的變量(或者你在逗號後面說的任何東西),該變量本身就包含異常。例如,在我的最後一個例子中,這就是我用來打印異常對象的類型(變量'e')。 – 2012-03-08 20:14:42