【发布时间】:2011-07-17 16:30:05
【问题描述】:
对 C# 很陌生,我想知道我应该如何使用异常?我的意思是,不是机械水平,而是良好的实践水平。
例如,我将使用我的计算器进行标记化并转换为 RPN 并解决 RPN 中给出的问题。
在标记化步骤中,有各种无效输入,例如“7.7.8”或“^#”,我是否应该对未知符号和无效数字有单独的例外?说有一个异常,然后在其中包含一个包含错误类型的方法,将其提供给用户是错误的吗?
我真的找不到太多关于这种事情的材料,所以我想我会问比我更有经验的人。
-----编辑:
感谢大家的精彩回答,今天我学到了很多关于我的问题的知识,甚至更多。
【问题讨论】:
-
异常是昂贵的,输入应该被验证。如果检测到无效输入,您需要在代码中处理它而不抛出异常。
-
@kzen 我不同意。如果提供了无效输入,您应该将 ArgumentException 抛回给调用者并让调用者处理它。异常可能很昂贵,但对于一个简单的计算器应用程序,为无效输入抛出异常是相当标准的。
-
@kzen - 取决于输入的来源。来自用户,是的,您应该优雅地验证和失败。从另一个代码块中,该代码被搞砸了,异常是通知开发人员的方式
-
本例使用异常似乎大大简化了程序的流程,我用异常处理无效输入。昂贵在这里并不特别重要。
-
@Robert,这是对我原始声明的有效补充......