C# 异常导致我的表单关闭

C# 异常导致我的表单关闭,c#,exception,formatexception,C#,Exception,Formatexception,当我抛出FormatException时,表单似乎总是关闭。是否有一种方法使窗体不关闭,以便我可以在窗体上执行操作 例如: int postcodeNumeriek = 0; if (int.TryParse(postcode.Text, out postcodeNumeriek) == false) { throw new FormatException("De postcode heeft een verkeerd formaat"); }

当我抛出FormatException时,表单似乎总是关闭。是否有一种方法使窗体不关闭,以便我可以在窗体上执行操作

例如:

    int postcodeNumeriek = 0;
    if (int.TryParse(postcode.Text, out postcodeNumeriek) == false)
    {
        throw new FormatException("De postcode heeft een verkeerd formaat");
    }

    cmd.Parameters.AddWithValue("@naam", familienaam.Text);
    cmd.Parameters.AddWithValue("@voornaam", voornaam.Text);
    cmd.Parameters.AddWithValue("@straat", straat.Text);
    cmd.Parameters.AddWithValue("@nummer", nummer.Text);
    cmd.Parameters.AddWithValue("@bus", bus.Text);
    cmd.Parameters.AddWithValue("@postcode", postcode.Text);
    cmd.Parameters.AddWithValue("@gemeente", gemeente.Text);
    cmd.Parameters.AddWithValue("@telefoonnummer", telefoonnummer.Text);
    cmd.Parameters.AddWithValue("@btwnummer", btwNummer.Text);
    cmd.Parameters.AddWithValue("@nieuwsbrief", nieuwsbrief.Checked);
    cmd.Parameters.AddWithValue("@emailadres", emailAdres.Text);
    cmd.Parameters.AddWithValue("@klantnummer", klantID);

    cmd.ExecuteNonQuery();

    cmd = new SqlCeCommand("UPDATE Klanten SET Actief=0 WHERE ID='" + recordID + "'", Klantenbeheer.HuidigeDatabaseVerbinding);
    cmd.ExecuteNonQuery();
}
catch (FormatException e)
{
    postcode.Focus();
}
在本例中,我希望我的邮政编码在格式不正确时生成一个异常。发生这种情况时,表单将关闭,因此postcode.Focus();不会被处决


也许是的,但它不可见。

我知道他的手在哪里。 文本框中的文本框与文本框中的文本框格式一致

我认为最好删除FormatException。 锥虫很好。但只需在文本框中填入一些信息即可

int postcodeNumeriek = 0;

if (int.TryParse(postcode.Text, out postcodeNumeriek) == false)
{
    postcode.Text ="format postalcode incorrect";
}

在这些情况下,使用Try语句总是很好的。

您是否使用了调试器来确保抛出的异常实际上是您正在抛出的异常,而不是另一个异常?您也可以简单地使用
Int.Parse
而不是
Int.TryParse
,因为如果抛出,前者将抛出
FormatException
无法分析字符串。我一直在调试,现在我看到,即使遇到异常,我的代码中的this.Close()仍会关闭表单get。我似乎不能仅仅回答我自己的问题yet@Dirk你有反向…OP使用TryParse()很好。@Flybersite为什么要抛出异常?如果目的是通知用户,为什么不使用MessageBox()和优雅的退出?