Python - Python 3.2.2中的pythoncom.com_error处理

时间:2012-02-08 23:43:00

标签: exception pythoncom

我正在使用Python 3.2.2,并构建一个Tkinter接口来进行一些Active Directory更新。我在尝试处理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”等没有被定义为全局变量。

如果我删除逗号和括号中的所有位,那么它一切正常,除了我无法确切地看到异常中发生了什么,我想要这样我可以通过AD传递实际的错误消息

有没有人知道如何在Python 3.2.2中正确处理这些pythoncom异常?

提前致谢!

2 个答案:

答案 0 :(得分:4)

我只需要使用现代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命令是否真的如此,所以我可能会明确地引用键;别人可能肯定知道。]

答案 1 :(得分:0)

我使用这种结构(Python 3.5) -

尝试:   ... 除了例外e:   打印("级别参数错误",e)   ... 其他:   ...