[英]Issue with sys.exc_info() within a function returns None tuple
我写了一个打开访问数据库的函数。 当失败时,它会抛出一个带有pywintypes_error消息的异常,例如:
pywintypes.com_error: (-2147352567, 'Une exception s\u2019est produite.', (0, None, 'La base de données est déjà ouverte.', None, -1, -2146820421), None)
我想用sys.exc_info()捕获此消息,但是在我的函数中不起作用:它返回None。
这是我的功能:
def drop_user(user):
global dbpath
with open("login_hash.txt", 'r+') as fp:
data = fp.readlines()
for lines in data:
if user not in lines:
fp.write('')
fp.truncate()
try:
print("Access running...")
access = win32com.client.Dispatch('Access.Application')
access.OpenCurrentDatabase(dbpath)
acDb = access.CurrentDb()
access.Visible = False
access.CurrentProject.Connection.Execute("DROP USER " + user + ";")
kill_access()
del access
messagebox.showinfo("Success", user + " a bien été ajouté.")
except (pywintypes.com_error):
pattern = r'"(.*?)"'
m = re.search(pattern, str(sys.exc_info()[1]))
messagebox.showinfo("Erreur", m.group().strip('"').replace('\xa0', ''))
kill_access()
del access
谢谢你的帮助
exc_info()[1]
是异常实例,使用except子句的as <name>
部分可以更轻松地获得实例,即:
try:
your_code_here()
except pywintypes.com_error as exc:
# here `exc` is the exception instance
然后,您可以使用exc.args
获取传递给异常的exc.args
。
您可能还想了解字符串格式化操作,即:
print("this is a {} with {}".format("format string", "placeholders"))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.