学习Windows窗体中的异常处理

156 阅读4分钟

Windows窗体中的异常处理

Windows窗体是用于制作应用程序的最佳工具之一。它为各种预建对象提供了拖放功能,如按钮、文本框、下拉选择和许多其他有用的工具。

然而,我们如何管理来自用户的输入?

在本教程中,我们将管理在使用windows窗体时将出现的各种错误和问题。我们将使用异常处理来防止这些错误,并指导用户正确使用应用程序。

前提条件

  • 对C#编程语言有基本了解。
  • 对Windows窗体有基本的了解。
  • 在你的系统上安装Visual Studio。

安装指南

  • 了解如何在Visual Studio中设置C#环境。

异常处理

有时,在运行期间,程序可能会面临一些错误,干扰其进程或流程。这就是异常处理概念的由来。

通过异常处理,我们可以测试和修复各种错误,以保持程序的流程。

在异常处理中,我们有三个主要的关键字,在处理一段代码时,我们将使用这些关键字。

  • Try- 这个范围用于可能产生错误的那段代码。它也可以用来故意抛出一个错误来测试代码,看看它对错误有什么反应。
  • Catch- 这个作用域用来捕捉错误并向用户解释问题。我们用它来显示一个消息框或要求重新填写表单的数据。它也可以用来引导用户完成修复程序的步骤。有时,我们用它来改变一个对象或一个变量的值。
  • 最后--这个范围的使用是可选的,无论如何都会发生,即使代码没有产生任何错误。

代码外部(表格)

下面的例子将评估两个数字的除法。

  • 3个文本框,其中2个用于输入(分子和分母)。
  • 2个标签,用于命名操作(÷ & =)。
  • 1个按钮用于开始操作。

Exception form

在下面的代码中,我们使用TextBoxes从用户那里获得两个输入。然后我们把输入从StringInt ,并在使用按钮评估答案后返回到字符串。

private void button1_Click(object sender, EventArgs e)
        {
            int numerator = Convert.ToInt32(textBox1.Text);
            int denominator = Convert.ToInt32(textBox2.Text);

           int Answer = numerator / denominator;

            textBox3.Text = Answer.ToString();
        }

上面的代码只能在最佳情况下工作。这是因为我们有两个已知的问题。

  • 除了数字以外的任何输入都会导致错误,因为我们只接受数字。
  • 分母的值是0,但我们不能用任何数字除以0。

修复问题

为了修复代码并解决这些问题,我们将使用异常处理。Try 作用域将处理这两个问题,并通知任何后续的Catch 作用域。

第一个catch范围将解决两个文本框的无效输入问题。第二个catch将解决分母的值为0的问题。

如前所述,Finally作用域是可选的,但我们可以在这里使用它来重置两个文本框的值,以便进行下一步操作。

  private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                int numerator = Convert.ToInt32(textBox1.Text);
                int denominator = Convert.ToInt32(textBox2.Text);

                int Answer = numerator / denominator;

                textBox3.Text = Answer.ToString();
            }
            catch(FormatException)
            {
                MessageBox.Show("Invalid input enter two numbers please");
            }
            catch (DivideByZeroException divideByZeroException)
            {
                MessageBox.Show(divideByZeroException.Message,"Can't divide by zero");

            }
            finally
            {
                textBox1.Text = "";
                textBox2.Text = "";
            }
        }

当问题发生时,消息框会这样显示。

Error output

💡提示。只有在你需要时才使用异常处理的工具。

例如,下面的代码需要一个用户的出生日期。

 private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                int day = Convert.ToInt32(Daybox.Text);
                int year = Convert.ToInt32(Yearbox.Text);
                string month = Monthbox.Text;


            }
            catch (FormatException)
            {
                MessageBox.Show("Invalid input, enter a valid form of date please");
            }
            finally
            {
                Daybox.Text = "";
                Monthbox.Text = "";
                Yearbox.Text = "";
            }
        }

结果。

Date normal

上面的程序运行时不会出现任何错误。这是因为我们使用了异常处理。

然而,我们可以直接使用工具箱中的DateTimePicker工具。

Date tool

在这种情况下,你不需要使用任何的异常处理工具,因为用户不允许从键盘上输入任何东西。因此,输入将永远是有效的。

private void button1_Click(object sender, EventArgs e)
        {
            string Alldate = dateTimePicker1.Text;
            MessageBox.Show(Alldate);
        }

总结

在本教程中,我们建立了一个除以两个数字的表单,并了解了异常处理以及如何使用其属性和方法。我们还用一个例子说明了错误是如何发生的,以及我们如何使用Try/Catch方法来修复它们。

不要忘记测试代码以充分了解它是如何工作的。