如何单独捕获这些异常?

2024-05-12

我正在编写一个与 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 is <class 'pywintypes.com_error'>,不能用于捕获异常:

... catch pywintypes.com_error as e:
NameError: global name 'pywintypes' is not defined

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

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 and QbClosedError不存在,那么应该用什么来代替它们呢?


我一发布,就找到了以非通用方式捕获异常的方法相关侧栏中出现的问题 https://stackoverflow.com/questions/6336831/how-to-catch-a-pywin32com-exception-on-opening-files。以下是捕获这些异常的方法:

from pywintypes import com_error

except com_error as e:

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

except com_error as e:

    if e.excepinfo[5] == -2147220464:
        print('Please change the Quickbooks mode to Multi-user Mode.')

    elif e.excepinfo[5] == -2147220472:
        print('Please start Quickbooks.')

    else:
        raise e

我曾考虑过将此问题标记为欺骗,但考虑到其他相关问题都没有处理以下情况区分抛出的不同异常在这个单一类型下,我留下这个,因为它解决了这个问题并回答了它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何单独捕获这些异常? 的相关文章

随机推荐

  • C 中什么函数可以替换字符串中的子字符串?

    给定一个 char 字符串 我想查找所有出现的子字符串并将其替换为备用字符串 我没有看到任何简单的函数可以实现这一点
  • 在运行时用Dagger添加Retrofit RequestInterceptor

    我正在使用匕首和改装 我用 Dagger 注入我的 Retrofit 服务 现在我想做一个授权请求来获取 accessToken 之后 我想使用请求拦截器来增强我的 api 模块 以便将此访问令牌用于将来的请求 我的想法是在收到访问令牌后使
  • Jenkins 管道和 java.nio.file.* 方法的问题

    我正在尝试使用 java nio file 中的方法在 Jenkins 管道中执行一些基本文件操作 无论代码存在于哪个节点块中 代码都在主节点上执行 在管道中 我已经验证了各个节点块都是正确的 它们唯一地标识了特定的节点 但是 pathEx
  • 设计抽象类时是否应该考虑序列化问题?

    一般来说这个问题来自Eclipse建议在抽象类上添加串行版本UID 由于该类是抽象类 因此该类的实例永远不会存在 因此它们永远不会被序列化 只有派生类才会被序列化 所以我的问题是放置一个安全 SuppressWarnings serial
  • 我可以在同一个 Azure 容器上创建和添加多少个访问策略?

    我通过搜索没有找到答案 我认为我应该能够在一个容器上创建许多存储访问策略 至少数千个 但经过测试 我的程序最多只能在一个容器上添加5个策略 然后我尝试了Microsoft Azure Storage Explorer 它也有这个限制 最多只
  • 将文件读取为 JSON

    我想读取几个文件 index html style css main js 来创建用于上传的 JSON 有效负载 我知道使用 Nodejs 我可以开始创建我想要的东西 如下所示 var fs require fs fs readFile i
  • 如何在 Windows 7 中使用 Python 廉价地创建非常大的文件? [复制]

    这个问题在这里已经有答案了 可能的重复 在Windows系统上快速创建大文件 https stackoverflow com questions 982659 quickly create large file on a windows s
  • 如何从 Visual Studio Code API 打开浏览器

    我只是在探索一种从用于开发扩展的 Visual Studio Code API 打开默认浏览器的方法 以下是我的代码 var disposable vscode commands registerCommand extension brow
  • 如何使用 SAX Java 解析器读取注释文本

    我只想使用 Java 中的 SAX 解析器读取 XML 文件中对象标记的注释 这是我的文件的摘要
  • 在请求标头中设置 Cookie Angular2

    我是 angular2 的新手 我的服务器 spring 在其响应标头中使用 set cookie 值来响应身份验证 如何将该 cookie 设置为下一次 API 调用的请求标头 我搜索了很多 但找不到合适的解决方案 作为http get
  • 如何使用全局 Key 从 Flutter 中的另一个小部件更新小部件状态?

    I have a main widget screen contain two main widgets a Header marked with red and a list marked with purple here is my c
  • Mysql:计算访问频率

    我有这张桌子 CREATE OR REPLACE TABLE hits ip bigint page VARCHAR 256 agent VARCHAR 1000 date datetime 我想计算每个页面的 googlebot 访问频率
  • 使用 NodeJS 创建 YouTube 播放列表

    我正在尝试使用 NodeJS 服务器创建 YouTube 播放列表 我已按照 Oauth 的 NodeJS 快速入门说明进行操作 如以下链接所示 https github com youtube api samples blob maste
  • Intellij IDEA 断点停止在 JAR 中,而不是我的项目的源代码中

    我在 java 文件中设置了一个断点 我通过 maven jetty 插件启动了 jetty 我设置断点的java文件也打包成JAR了 Intellij 在断点处停止 但它显示了打包到 JAR 中的文件而不是 java 文件 它的行为就像我
  • 如何仅在按下某个键时触发鼠标单击?在Python中

    我想制作一个程序 或者当我单击某个键时 鼠标会自动单击 只要我单击该键 如果我不单击该键 它就会停止 我不希望只在触摸按键一次时才发生点击 而是只要按住按键就发生点击 也可以像雷蛇突触鼠标一样按下鼠标左键触发点击 任何想法 EDIT 1 这
  • Django - 渲染到字符串无法加载 CSS

    我正在尝试使用 Django 1 8 render to string 通过管理命令将 html 转换为 pdf 而不是使用 View request 以下代码可以将模板转换为 pdf 但它无法将 CSS 加载到模板中 def html t
  • 如何使用maven创建基于spring的可执行jar?

    我有一个基于 Maven 的 Spring WS 客户端项目 我想将其打包为单个 jar 在eclipse中 一切运行正常 当我尝试将其打包为可执行 jar 时 我收到 ClassNotFound 异常 因为 Spring jar 未包含在
  • 无法在 BlackBerry Playbook 上设置音量

    我在更改黑莓游戏书的音量时遇到问题 首先 我将 Android 应用程序重新打包到 Palybook 应用程序 我需要使用搜索栏更改黑莓剧本的音量 并在搜索监听器中设置音频管理器音量 这是代码 audioManager AudioManag
  • 使用 twitterkit 将图像发布到 Twitter

    我正在尝试使用 Twitter 的新 TwitterKit 和自定义 UI 发布图像和推文 他们提供的唯一文档是如何用他们的观点来做这件事 所以我可以弄清楚如何在没有图像的情况下做到这一点 NSMutableDictionary messa
  • 如何单独捕获这些异常?

    我正在编写一个与 Quickbooks 交互的 Python 程序 连接到 Quickbooks 时 根据问题的不同 我可能会遇到以下两个常见异常之一 pywintypes com error 2147352567 Exception oc