如何单独捕捉这些异常?

2024-10-01 07:48:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一个与Quickbooks接口的Python程序。连接到Quickbooks时,根据问题的不同,我可能会遇到两种常见的异常:

pywintypes.com_error: (-2147352567, 'Exception occurred.', (0, 'QBXMLRP2.RequestProcessor.2', 'The QuickBooks company data file is currently open in a mode other than the one specified by your application.', None, 0, -2147220464), None)

pywintypes.com_error: (-2147352567, 'Exception occurred.', (0, 'QBXMLRP2.RequestProcessor.2', 'Could not start QuickBooks.', None, 0, -2147220472), None)

except Exception as e捕获泛型异常表明e的类型是<class 'pywintypes.com_error'>,它不能用于捕获异常:

^{pr2}$

那么我如何以非通用的方式捕捉这两个异常呢?理想情况下,代码应具有以下布局:

try:
    qb = qbsdk_interface.Qbsdk_Interface(QB_FILE)

except QbWrongModeError as e:
    print('Quickbooks is open in the wrong mode!')

except QbClosedError as e:
    print('Quickbooks is closed!')

except Exception as e:
    print('Something else went wrong!')

当然,异常QbWrongModeError和{}不存在,那么应该有什么来代替它们呢?在


Tags: incomnoneisasexceptionerroropen
1条回答
网友
1楼 · 发布于 2024-10-01 07:48:12

当我发布后,我就找到了一种以非泛型方式在question that appeared in the Related sidebar中捕获异常的方法。以下是捕获这些异常的方法:

from pywintypes import com_error

except com_error as e:

请注意,异常的不同原因不能单独处理,因此必须通过比较e.exceptinfo[5]的值来检查except子句中的返回代码:

^{pr2}$

我曾考虑过将此问题标记为重复问题,但考虑到其他相关问题都无法处理区分在这一类型下引发的不同异常的情况,因此我将此问题留给它来解决并回答它。在

相关问题 更多 >