use*_*460 3 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):
Run Code Online (Sandbox Code Playgroud)
该代码与我所见过的处理这些异常的许多站点一致,但是对于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
Run Code Online (Sandbox Code Playgroud)
产生
(-2147221020, 'Invalid syntax', None, None)
{'excepinfo': None, 'hresult': -2147221020, 'strerror': 'Invalid syntax', 'argerror': None}
(-2147221020, 'Invalid syntax', None, None)
Run Code Online (Sandbox Code Playgroud)
对我来说[尽管我不确定args的顺序是否真的像它的样子,所以我可能会明确地引用这些键;其他人可能肯定知道。]
| 归档时间: |
|
| 查看次数: |
9290 次 |
| 最近记录: |