2012-02-08 41 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) ... 其他: ...