C# 在低级库函数中处理异常
我们正在编写一个低级函数库(主要是模拟一些Matlab sig处理函数)——基本上是静态对象上的一组静态方法。这将在更高级别的框架中使用(我们也正在编写)。框架和低级库都是内部使用的(不是公共的) 对于这种情况,什么是好的异常处理模型?我看到的两个选项是:C# 在低级库函数中处理异常,c#,dll,exception-handling,C#,Dll,Exception Handling,我们正在编写一个低级函数库(主要是模拟一些Matlab sig处理函数)——基本上是静态对象上的一组静态方法。这将在更高级别的框架中使用(我们也正在编写)。框架和低级库都是内部使用的(不是公共的) 对于这种情况,什么是好的异常处理模型?我看到的两个选项是: 1.在低级库中没有异常处理-让零除etc异常在消费框架中冒泡并处理它们。 2.在每个低级函数中,系统地检查参数中可能产生溢出、除零、意外根-ve num等的值,并抛出ArgumentException和有关问题的诊断文本 做2。提供超过1的优
1.在低级库中没有异常处理-让零除etc异常在消费框架中冒泡并处理它们。
2.在每个低级函数中,系统地检查参数中可能产生溢出、除零、意外根-ve num等的值,并抛出ArgumentException和有关问题的诊断文本 做2。提供超过1的优势。这就证明了附加代码的合理性?我的感觉是,这可能使问题发生的位置更容易确定。
是否有理由这样做或那样做?答案在很大程度上取决于所讨论的库:
- 它是由您的Oragnization独家使用,还是公开发布
- 是否存在任何安全隐患
- it失败的商业成本是多少李>
*“公共”的含义可以解释。2。这对于帮助程序员使用您的库非常重要。当这样的程序员对库了解不够时,好的异常非常有用。你还避免了一个“你的代码糟透了”的支持电话,而不是你想要的那种。它不是1的替代品,您不太可能涵盖所有可能的故障,在某些情况下,检查的成本可能会过高。1和2都适用。这是一个相当不错的评论答案。谢谢。这个链接的问题很有趣——前两个答案几乎都是对号入座的,但它们的票数相似(16:13)——似乎并不明确,正如你所说的,这取决于上下文。@Bob因为你在“模拟”Matlab函数,你可能应该包括Matlab处理边界检查的方式。(我在这里对仿真的定义有点迂腐。)