C# - 解析异常失败?

Gil*_*man 12 .net c#

我正在用C#编写一个程序,我想捕获将""(null)转换为int所引起的异常.什么是例外的名字?

编辑: 我不确定我可以在这里显示完整的代码......但我确定你不需要完整的代码,所以:

        int num1 = Int32.Parse(number1.Text);
        int num2 = Int32.Parse(number2.Text);
Run Code Online (Sandbox Code Playgroud)

Geo*_*ton 33

如果可以避免,请不要异常编码!

您要查找的异常名称称为a FormatException.

但是,首先TryParse对您尝试解析的对象执行操作会更明智,例如

int value;
if(!int.TryParse("1", out value))
{
    // You caught it without throwing an exception.
}
Run Code Online (Sandbox Code Playgroud)

  • @devinb:添加两行额外的代码只是为了让它快10ms?对我来说听起来像不必要的微优化...... (5认同)
  • @George,如果你支持"如果你可以避免它,不要通过例外编码"这样的声明,并且"它会更聪明",并附带一些冷酷的事实,这将是很棒的:-) (4认同)

Ste*_*ner 13

如果解析失败,您将获得FormatException.为什么不使用int.TryParse呢?


Ale*_*ger 11

作为旁注,找出异常的一种简单方法是运行它.当您遇到错误时,它会为您提供例外名称.


Hei*_*nzi 6

让我们来看看文档(这是一个更"干净"的解决方案):

public static int Parse(string s)

[...]

例外:

  • ArgumentNullException:s为null.
  • FormatException:s的格式不正确.

这应该回答你的问题.正如其他人已经提到的那样,也许你问的是错误的问题并且想要使用Int32.TryParse.