2012-02-08 30 views
1

我正在使用Python 3.2.2,並構建一個Tkinter接口來執行一些Active Directory更新。我無法處理pythoncom.com_error異常。Python - 在Python 3.2.2中處理pythoncom.com_error

我抓住從這裏的一些代碼: http://code.activestate.com/recipes/303345-create-an-account-in-ms-active-directory/

但是,我用下面的(直接從上述網站)處理異常提出:

except pythoncom.com_error,(hr,msg,exc,arg): 

這段代碼是很多的一致我已經看到處理這些異常的站點,但是對於Python 3.2.2,如果在「pythoncom.com_error」之後包含逗號,則會出現語法錯誤。如果我刪除了逗號,程序就會啓動,但是當發生異常時,我會收到其他異常,因爲「hr」,「msg」等沒有被定義爲全局變量。

如果我刪除了括號中的逗號和所有位,那麼它一切正常,除非我不能確切地看到異常中發生了什麼,我希望能夠通過實際的錯誤消息廣告。

有誰知道如何在Python 3.2.2中正確處理這些pythoncom異常?

在此先感謝!

回答

2

你只需要使用現代except-as語法,我想:

import pythoncom 
import win32com 
import win32com.client 

location = 'fred' 
try: 
    ad_obj=win32com.client.GetObject(location) 
except pythoncom.com_error as error: 
    print (error) 
    print (vars(error)) 
    print (error.args) 
    hr,msg,exc,arg = error.args 

產生

(-2147221020, 'Invalid syntax', None, None) 
{'excepinfo': None, 'hresult': -2147221020, 'strerror': 'Invalid syntax', 'argerror': None} 
(-2147221020, 'Invalid syntax', None, None) 

我[雖然我從來沒有肯定ARGS訂單是否真的是什麼看起來像,所以我可能會明確指出鍵;其他人可能知道肯定]

+0

謝謝你的工作,出色的工作。我真正想要的是在你的代碼中最終變成'exc'的特定部分。 我使用: 除了pythoncom.com_error作爲誤差: 小時,味精,EXC,ARG = error.args 的errorMessage = EXC [2] 再次感謝! – user1198460 2012-02-09 00:20:25

0

我用這個結構(Python的3.5) -

嘗試: ... 除例外爲e: 打印( 「錯誤級別參數」,E) ... 其他: ...