是否使用空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"); 
}

是否使用空catch语句

Int.TryParse是更好的解决方案。如果可以避免,为什么要抛出异常?如果你想把很多字符串强制转换为Integer,但它们都失败了,你的程序会很慢,因为Integer.TryParse比抛出异常快得多。

但最重要的是,第一个是更好的rpgoraming风格!

在这种特殊情况下,使用TryParse,这就是它的作用。

通常,空的Catch块确实非常糟糕——千万不要这样做(至少留下一条注释来解释为什么该块在那里并且是空的)。但您的代码并没有这样做:catch块不是空的,Catch的这种用法完全可以(只是,在这种特定情况下,还有更好的解决方案)。