2

我有一个类型的变量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"); 
}
4

2 回答 2

4

Int.TryParse 是更好的解决方案。如果可以避免异常,为什么还要抛出异常?如果您想将大量字符串转换为整数并且它们失败了,您的程序将非常慢,因为 Integer.TryParse 比抛出异常要快得多。

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

于 2013-09-01T17:16:13.330 回答
3

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

一般来说, Catch块确实非常糟糕——永远不要这样做(至少留下评论来解释为什么块在那里并且是空的)。但是您的代码没有这样做:catch 块不是空的,并且这种用法Catch完全没问题(除此之外,同样,在这种特定情况下,有更好的解决方案)。

于 2013-09-01T17:20:11.520 回答