C#:关于System.ArgumentNullException

时间:2015-01-22 06:21:06

标签: c# .net

static void X(String a,String b,String c)
    {

       TextBox textBox3 = new TextBox();
                      a = textBox3.Text;

      if (a == " ")
            {

                throw new ArgumentNullException(a);
            }


      TextBox textBox4 = new TextBox();
                     b = textBox4.Text;

      if (b == null)
            {
                throw new ArgumentNullException(b);
            }

      TextBox textBox5 = new TextBox();
            c = textBox5.Text;

            if (c == null)
            {
                throw new ArgumentNullException(c);
            }


     }

private void Go2_Click(object sender,EventArgs e)         {             尝试             {

         ........//my code
            X(Sx,Sy,V);
         ........// my some code
        }
        catch (System.ArgumentNullException)
        {
            MessageBox.Show("Your String is not correct");
        }

}

我的程序无法执行System.ArgumentNullException。我该如何解决这个问题?请指导。

3 个答案:

答案 0 :(得分:1)

您需要使用string.IsNullOrEmpty()检查string变量的值。当您使用textbox.Text在方法中为它们分配值时。他们获得分配给他们的string.Empty值。并且你的if语句永远不会演变为true,并且它们永远不会抛出异常。 如果你改变这样的条件,那就可以了,

 if (string.IsNullOrWhiteSpace(a))
 {
      throw new ArgumentNullException("Thrown from first condition");
 }

答案 1 :(得分:1)

检查字符串是否为null使用专用函数并使用参数名称而不是参数初始化ArgumentNullException。

例如,而不是

if (a == " ")
            {

                throw new ArgumentNullException(a);
            }

if (string.IsNullOrWhiteSpace(a))
                {

                    throw new ArgumentNullException("a");
                }

if (c == null)
            {
                throw new ArgumentNullException(c);
            }

if (string.IsNullOrEmpty(c))
            {
                throw new ArgumentNullException("c");
            }

答案 2 :(得分:0)

尝试代替:

    throw new ArgumentNullException(c);
    catch (System.ArgumentNullException)
    {
        MessageBox.Show("Your String is not correct");
    }

这:

    throw new ArgumentNullException("Your String is not correct");
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }