gpt4 book ai didi

python - 处理python中的外部代码异常

转载 作者:太空宇宙 更新时间:2023-11-03 18:15:16 24 4
gpt4 key购买 nike

我有:

  1. 调用外部供应商代码的函数call_vendor_code()
  2. 异常类MyDomainException(Exceprion)

我知道函数call_vendor_code()可能会抛出MyDomainException(因为函数中的逻辑是我的)。但我如何知道子调用中的 call_vendor_code() 中可能会引发哪些供应商代码异常?

示例:

def call_vendor_code():
if not vendor.package.module.make_more_love():
raise MyDomainException('Not enough love.')

供应商代码可能会引发我无法处理的任何其他异常。可以拦截供应商代码中的所有异常,但我认为这是一个糟糕的解决方案。

def call_vendor_code():
try:
if not vendor.package.module.make_more_love():
raise MyDomainException('Not enough love.')
except Exception, e:
raise MyDomainException(e)

如何与其他级别的异常交互/不交互?

最佳答案

你的逻辑很合理。

如何更优雅地处理这些供应商特定的异常,取决于关于供应商代码引发的异常类型。

它们是普通的 python 异常吗(例如 ValueError、TypeError 等)?然后你没有太多选择。你应该将它们包装在一个通用的除了异常语句。在这些不幸的情况下,很多人尝试通过解析异常消息来区分错误类型。这是一个主要的反模式,但你能做什么?

他们是否会提出自己的供应商特定异常(exception)情况(最好的情况)?然后您可以轻松地区分并在您的应用程序中更优雅地处理它们代码。他们应该有一些关于它的文档:)或者,如果代码可用,请仔细阅读代码并亲自查看。

如果我们谈论的是与某些外部系统(某些外部系统)对话的供应商代码例如,某种数据库),它们可能有一个通用的 VendorException存储在异常中的一些内部错误代码(1133、623等)实例作为属性。同样,他们很可能会列出以下内容这些错误代码及其在某种文档中的描述,您可以使用它们将它们映射到您自己的自定义异常中。

关于python - 处理python中的外部代码异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25116666/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com