exception之Python之Python 3.2.2 中的 pythoncom.com_error 处理

52php 阅读:34 2024-10-01 17:34:08 评论:0

我正在使用 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 异常?

提前致谢!

请您参考如下方法:

您只需要使用现代的 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 顺序是否真的像它看起来的那样,所以我可能会明确地引用键;其他人可能肯定知道。]


标签:Python
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号