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。我该如何解决这个问题?请指导。
答案 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);
}