是否使用空catch语句

时间:2013-09-01 17:09:52

标签: c# try-catch

我有一个类型为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"); 
}

2 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:3)

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

一般来说, Catch块确实非常糟糕 - 从不这样做(至少留下评论来解释为什么块存在并且为空)。但是你的代码不是这样做:catch块不是空的,Catch的这种用法完全没问题(除此之外,在这种特殊情况下还有一个更好的解决方案)