我正在用c#构建我的第一个WPF应用程序。下面是包含try-catch块的代码的一部分。但是,它有代码重复。是否可以在try块中使用if-else语句而具有相同的功能。谁能建议一个更好的方法来做到这一点?也许我们可以抛出ArithmeticExceptions,但我是所有这些东西的新手,使用像(1/0)和(1%0)之类的异常直接给出错误。
目的:检查textbox3是否包含10位数字。如果是,则在texbox4中显示该数字以及其他一些数据。如果不是,则显示错误消息。
private void Button_Click_1(object sender, RoutedEventArgs e)
{
try
{
textbox3.Text = (Convert.ToInt64(textbox3.Text)).ToString();
if ((textbox3.Text).Length == 10)
{
textbox4.Text = textbox1.Text + Environment.NewLine + textbox2.Text + Environment.NewLine + textbox3.Text;
}
else
{
textbox3.Text = string.Empty;
textbox4.Text = string.Empty;
MessageBox.Show("Please, enter a 10 digit Contact No.", "Error");
}
}
catch
{
textbox3.Text = string.Empty;
textbox4.Text = string.Empty;
MessageBox.Show("Please, enter a 10 digit Contact No.", "Error");
}
}
答案 0 :(得分:2)
如果您的目标是测试textbox3.Text
是否包含 10位数字,您可以使用正则表达式
if (Regex.IsMatch(textbox3.Text, @"^\d{10}$"))
textbox4.Text = textbox1.Text + Environment.NewLine +
textbox2.Text + Environment.NewLine +
textbox3.Text;
else {
textbox3.Text = string.Empty;
textbox4.Text = string.Empty;
MessageBox.Show("Please, enter a 10 digit Contact No.", "Error");
}
答案 1 :(得分:0)
由于似乎只有Convert.ToInt64
会抛出异常,我可能会做这样的事情。
bool error = false;
try
{
textbox3.Text = (Convert.ToInt64(textbox3.Text)).ToString();
}
catch
{ error = true; }
if ((textbox3.Text).Length == 10)
{
textbox4.Text = textbox1.Text + Environment.NewLine + textbox2.Text + Environment.NewLine + textbox3.Text;
}
else
error = true;
if (error)
{
textbox3.Text = string.Empty;
textbox4.Text = string.Empty;
MessageBox.Show("Please, enter a 10 digit Contact No.", "Error");
}