C# 如何隐藏.NET错误框?

C# 如何隐藏.NET错误框?,c#,C#,我正在尝试制作一个带有运算(如加减)的数字转换器。但它给出了一个.NET消息框(它实际上捕捉到了错误,但它正在显示) 附言: 错误:'System.FormatException'发生在mscorlib.dll中 错误信息:输入字符串的格式不正确 我试过这个: int sayi1 = 0; int sayi2 = 0; int sonuc = 0; try { sayi1 = Convert.ToInt32(ilkSayi.Text); sayi2 = Convert.ToIn

我正在尝试制作一个带有运算(如加减)的数字转换器。但它给出了一个.NET消息框(它实际上捕捉到了错误,但它正在显示)

附言:

错误:'System.FormatException'发生在mscorlib.dll中

错误信息:输入字符串的格式不正确

我试过这个:

int sayi1 = 0;
int sayi2 = 0;
int sonuc = 0;

try
{
    sayi1 = Convert.ToInt32(ilkSayi.Text);
    sayi2 = Convert.ToInt32(ikinciSayi.Text);
}
catch(FormatException ex)
{
    hata_labeli.ForeColor = System.Drawing.Color.Maroon;
    hata_labeli.Text = "Tam sayı yerina başka bir değer girilmiş!";
    throw ex;
}
此异常处理程序工作正常,但它显示了以下内容(抱歉,这张照片是土耳其语):

如何隐藏此messagebox

异常处理程序正在捕获错误,请查看以下照片:


如果您按照建议使用
TryParse
,问题就会消失,并且您还可以为每个值获得特定的消息,尽管您必须添加代码来处理这两个无效值:

int sonuc = 0;
int sayi1;
int sayi2;

if (!int.TryParse(ilkSayi.Text, out sayi1))
{
    hata_labeli.ForeColor = System.Drawing.Color.Maroon;
    hata_labeli.Text = "Tam sayı yerina başka bir değer girilmiş!"; // ilkSayi message
}    
else if (!int.TryParse(ikinciSayi.Text, out sayi2))
{
    hata_labeli.ForeColor = System.Drawing.Color.Maroon;
    hata_labeli.Text = "Tam sayı yerina başka bir değer girilmiş!"; // ikinciSayi message
}

// use the values..

如果按照建议使用
TryParse
,问题就会消失,并且您还可以为每个值生成特定的消息,尽管您必须添加代码来处理这两个无效值:

int sonuc = 0;
int sayi1;
int sayi2;

if (!int.TryParse(ilkSayi.Text, out sayi1))
{
    hata_labeli.ForeColor = System.Drawing.Color.Maroon;
    hata_labeli.Text = "Tam sayı yerina başka bir değer girilmiş!"; // ilkSayi message
}    
else if (!int.TryParse(ikinciSayi.Text, out sayi2))
{
    hata_labeli.ForeColor = System.Drawing.Color.Maroon;
    hata_labeli.Text = "Tam sayı yerina başka bir değer girilmiş!"; // ikinciSayi message
}

// use the values..

在处理异常时删除
throw ex
行。使用异常控制程序流是一种非常糟糕的编程方式
int.TryParse
FTW.@UweKeim你在说什么
Java
一直在使用它!我觉得winforms的方法似乎在攻击我。我觉得不安全。如果你真的想重新抛出一个异常,你应该写
抛出和非
抛出ex。原因是,执行后一种操作会将调用堆栈重置到重新调用的位置,这样做会使调试原始异常抛出的位置和原因变得困难。在处理异常时删除
throw ex
行。使用异常控制程序流是一种非常糟糕的编程方式
int.TryParse
FTW.@UweKeim你在说什么
Java
一直在使用它!我觉得winforms的方法似乎在攻击我。我觉得不安全。如果你真的想重新抛出一个异常,你应该写
抛出和非
抛出ex。原因是,执行后一种操作会将调用堆栈重置到重新调用的位置,这样做会使调试原始异常抛出的位置和原因变得困难。啊,好吧,对不起,我在
out
语句中使用了早期版本的C不支持的内联变量。我将编辑答案。第二个语句必须是else if。随时乐意帮助!啊,好的,对不起,我在
out
语句中使用了早期版本的C#不支持的内联变量。我将编辑答案。第二个语句必须是else if。随时乐意帮助!