C# 如何隐藏.NET错误框?
我正在尝试制作一个带有运算(如加减)的数字转换器。但它给出了一个.NET消息框(它实际上捕捉到了错误,但它正在显示) 附言: 错误:'System.FormatException'发生在mscorlib.dll中 错误信息:输入字符串的格式不正确 我试过这个: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
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。随时乐意帮助!