首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python - Python 3.2.2中的pythoncom.com_error处理

Python - Python 3.2.2中的pythoncom.com_error处理
EN

Stack Overflow用户
提问于 2012-02-09 07:43:00
回答 2查看 13.8K关注 0票数 3

我正在使用Python 3.2.2,并构建了一个Tkinter接口来执行一些Active Directory更新。我在尝试处理pythoncom.com_error异常时遇到了问题。

我从这里抓取了一些代码:http://code.activestate.com/recipes/303345-create-an-account-in-ms-active-directory/

但是,我使用以下代码(直接来自上面的站点)来处理引发的异常:

代码语言:javascript
复制
except pythoncom.com_error,(hr,msg,exc,arg):

这段代码与我见过的许多处理这些异常的站点是一致的,但是在Python3.2.2中,如果我在"pythoncom.com_error“后面加上逗号,我会得到一个语法错误。如果我去掉逗号,程序就会启动,但是当异常出现时,我会得到其他异常,因为"hr“、"msg”等没有被定义为全局变量。

如果我删除逗号和括号中的所有位,那么一切都很好,除了我不能确切地看到异常中发生了什么,这是我想要的,这样我就可以传递来自AD的实际错误消息。

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

提前感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-09 07:59:29

我认为,您只需要使用现代的except-as语法:

代码语言:javascript
复制
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

它会产生

代码语言:javascript
复制
(-2147221020, 'Invalid syntax', None, None)
{'excepinfo': None, 'hresult': -2147221020, 'strerror': 'Invalid syntax', 'argerror': None}
(-2147221020, 'Invalid syntax', None, None)

对我来说,虽然我从来不确定args命令是否真的像它看起来那样,所以我可能会显式地引用键;其他人可能会确定。

票数 7
EN

Stack Overflow用户

发布于 2018-01-11 07:45:30

我使用这个结构(Python3.5) --

尝试:...除了异常e: print (“级别参数错误”,e) ...其他:...

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9203336

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档