函数中 sys.exc_info() 的问题返回 None 元组



我写了一个打开访问数据库的函数。失败时,它会抛出异常,并显示一条pywintypes_error消息,如下所示:

pywintypes.com_error: (-2147352567, 'Une exception su2019est 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获取传递给异常的参数。

您可能还想了解字符串格式化操作,即:

print("this is a {} with {}".format("format string", "placeholders"))

最新更新