|
1
12
它非常简单:使用
异常只能用于异常情况,无效数据可能不是异常情况。也许你正在写一个数据清理程序,它期望得到无效的数据,并试图推断出当数据无效时合理的值是什么。也许数据并不那么重要,您可以跳过包含它的记录。
它取决于上下文,并且可以选择
|
|
|
2
23
除了您提到自己的性能方面之外,还有一个语义差异: 使用Try/Catch是为了特殊情况。输入无效数据是您所期望的,而不是异常的。 |
|
3
7
如果可能,使用
|
|
|
4
2
假设您正在读取日志文件:
因为上述代码的全部目的是从一个序列中提取有效项(该序列可能包含一些
无效
项目),我想
|
|
|
5
1
如果需要在解析失败时设置一个默认值,则可以使用if和triparse来完成此操作。 |
|
6
1
好吧,int.triparse返回一个bool,允许您测试它是否成功,而不是捕获异常。我通常在成功翻译信息的情况下使用它,我想使用它,但如果不是,这并不重要,我可以忽略失败,因为我想使用默认值,除非我得到一个有意义的值,在这种情况下,我将覆盖它,但如果值没有意义,我将保留默认值。 该理论认为异常本身就很昂贵,因此您不应该使用它们来指示程序流。您应该在语义错误的地方捕获它们,而不是在可能被解释为数据流的地方。 |
|
7
0
对于不介意在失败的分析(可能是无效的输入)中将值设置为0的情况,或者您希望简洁的情况,typarse的返回代码允许这样做。 |
|
|
8
0
每次你有一个解析要执行,因为它比一个异常要便宜得多,而且你可以使它成为一个简单的 如果 语句而不是大的try…catch块。 |
|
|
9
0
我不是猴子,但… 异常通过将处理传输到catch块来中断正常的代码流。 台盼将给您更多的控制(例如突出显示文本框中的错误),而不是依赖于异常机制。 |
|
|
10
0
如果您正在表单上验证输入,则可以在控件(或MessageBox或其他通知)返回false时在该控件上设置ErrorProvider。这并不是一个例外,因为正如其他人所说,你应该为它做计划。 |