gpt4 book ai didi

c# - 使用异常处理(可能改变)库的错误代码

转载 作者:可可西里 更新时间:2023-11-01 15:20:16 27 4
gpt4 key购买 nike

假设您正在使用一个返回错误代码的库。您想要为该库编写一个包装器,并且您想要在代码中处理带有异常的错误。

如果库仍在由其他人开发,并且错误代码可能会更改(可能有新的,可能有已弃用的,或者某些错误代码的含义可能会略有变化),您的解决方案是处理这个?

这就是我现在的处境。就我而言,该库是用 C++ 编写的,而我们使用的是 C#。库的编码员说错误代码可能会改变,我必须找到一种方法来处理它。

我们最初的解决方案是:

  1. 创建一个 XML 文件,其中包含不同类别的错误代码(终端错误、输入错误等)。
  2. Wrapper 在启动时获取这些错误代码。
  3. 通过检查错误代码的类别抛出适当的异常。

假设一个方法返回错误代码 100,然后包装器检查错误代码的类别。如果是终端错误则抛出终端错误异常,如果是用户输入错误则抛出用户输入错误异常

这应该可行,但我觉得这不是最佳解决方案。我想知道编写好的企业软件如何处理错误代码的更改。

你会建议做什么?

编辑: 我已经质疑过错误代码会改变这一事实,并且库的编码人员说代码正在开发中。这是一种算法,所以即使算法的工作方式也会随着它的原始研究而改变(他正在就此攻读博士学位)。所以他说以后可能会有不同的错误,或者有些可能是无关紧要的。

最佳答案

在这种情况下,您采用的数据驱动方法(使用 XML 文件)似乎是一种不错的方法。但是我会质疑为什么错误代码会发生变化——这表明没有为正在开发的库进行适当的设计。它的错误代码应该有一个定义明确的结构,而不是要求您不断改变对它们的解释。

您可能想尝试拥有一个整体的“库异常”异常类,并根据库错误的“类型”为您要抛出的每种不同类型的异常对其进行子类化。至少这样,您可以捕获所有 库错误,即使其中一种特定类型的异常从网络中漏掉了。 IE。在 try catch TerminalErrorException 之后,您会捕获类似 LibraryException 的内容。

关于c# - 使用异常处理(可能改变)库的错误代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14623352/

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