我应该如何使用例外?

Mat*_*ard 3 .net c#

对C#来说很新,我想知道如何使用异常?我的意思是,不是机械水平,而是在良好的实践水平.

我将使用例如我的计算器进行标记并转换为RPN并解决RPN中给出的问题.

在标记化步骤中,有各种无效输入,例如"7.7.8"或"^&##",我是否应该对未知符号和无效数字有单独的例外?说有一个例外,然后一个包含那种错误的方法给用户是不对的?

我真的无法在这类事情上找到太多材料,所以我想我会问比我更有经验的人.

- - -编辑:

感谢大家对你的精彩回应,我今天学到了很多:)关于我的问题,甚至更多的问题.

Eri*_*ert 15

从前提条件和后置条件的角度考虑你的词法分析器.以下是设计词法分析器的两种方法:

  1. 词法分析器是一种接收格式良好的输入字符串并输出词法分析的设备.输入字符串需要格式良好; 如果不是,那么词法分析器会因异常而失败.

  2. 词法分析器是一种获取输入字符串并产生词法分析的设备.词法分析包括错误条件的识别和分析.

知道你要传入的字符串是正确的吗?你想要在特殊情况下例外它是不正确的吗?或者你不知道字符串是否正确,你希望词法分析器确定?

在前一种情况下,抛出异常.在后一种情况下,将错误分析作为词法分析器输出的一部分.

基本上我所说的是不会产生令人烦恼的异常.令人烦恼的异常非常烦人.如果代码的调用者正在调用它来确定字符串是否正确,那么他们不希望以异常的形式提供该信息,他们希望以表示错误分析的数据对象的形式.如果代码的目的是产生错误分析,那么产生这样的分析作为方法的正常操作.不要将分析嵌入到异常中,并让某人捕获异常以获取它.

  • @Joel:谢谢你的客气话,但我向你保证,我是一个(合理的)正常人. (6认同)