我正在使用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):这段代码与我见过的许多处理这些异常的站点是一致的,但是在Python3.2.2中,如果我在"pythoncom.com_error“后面加上逗号,我会得到一个语法错误。如果我去掉逗号,程序就会启动,但是当异常出现时,我会得到其他异常,因为"hr“、"msg”等没有被定义为全局变量。
如果我删除逗号和括号中的所有位,那么一切都很好,除了我不能确切地看到异常中发生了什么,这是我想要的,这样我就可以传递来自AD的实际错误消息。
有人知道如何在Python 3.2.2中正确处理这些pythoncom异常吗?
提前感谢!
发布于 2012-02-09 07:59:29
我认为,您只需要使用现代的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命令是否真的像它看起来那样,所以我可能会显式地引用键;其他人可能会确定。
发布于 2018-01-11 07:45:30
我使用这个结构(Python3.5) --
尝试:...除了异常e: print (“级别参数错误”,e) ...其他:...
https://stackoverflow.com/questions/9203336
复制相似问题