是否使用空catch语句
本文关键字:catch 语句 是否 | 更新日期: 2023-09-27 18:29:46
我有一个类型为int
的变量,我想将其初始化为来自文本框(示例中为textBox1)的值
以前,我使用过第二个示例(2)。然而,随着我对编程的了解越来越多,我听说使用空的catch
-语句不是一个好主意。
我正在寻求这三个问题的答案:我应该切换到示例(1)中的代码吗?为什么/为什么不?它们之间有什么区别?
int myInteger;
最好使用什么?此(1):
int parsedValue;
if (!int.TryParse(textBox1.Text, out parsedValue))
{
MessageBox.Show("Numbers only, please");
return;
}
myInteger = parsedValue;
…或这个(2):
try
{
myInteger = int.Parse(textBox1.Text);
}
catch
{
MessageBox.Show("Numbers only, please");
}
Int.TryParse是更好的解决方案。如果可以避免,为什么要抛出异常?如果你想把很多字符串强制转换为Integer,但它们都失败了,你的程序会很慢,因为Integer.TryParse比抛出异常快得多。
但最重要的是,第一个是更好的rpgoraming风格!
在这种特殊情况下,使用TryParse
,这就是它的作用。
通常,空的Catch
块确实非常糟糕——千万不要这样做(至少留下一条注释来解释为什么该块在那里并且是空的)。但您的代码并没有这样做:catch块不是空的,Catch
的这种用法完全可以(只是,在这种特定情况下,还有更好的解决方案)。