如何获得导致异常的Value

时间:2012-11-19 07:52:03

标签: c# asp.net

如何获取无法转换的值?一般而言,而不是在这个单一的具体例子中。

try
{
    textBox1.Text = "abc";
    int id = Convert.ToInt(textBox1.Text);
}
catch
{
    // Somehow get the value for the parameter to the .ToInt method here 
}

4 个答案:

答案 0 :(得分:5)

你可以这样做吗?

int id;
if(int.TryParse(textbox.Text, out id)
{
   //Do something
}
else
{
    MessageBox.Show(textbox.Text);
}

您也可以使用先前建议的try catch来捕获异常并在catch中显示textbox.Text。

编辑:(问题改变方向后) 要显示无法转换的值,您可以执行以下操作。

string myValue = "some text";
int id = 0;
try
{
   id = Convert.ToInt32(myValue);
}
catch (FormatException e)
{
   MessageBox.Show(String.Format("Unable to convert {0} to int", myValue));
}

答案 1 :(得分:0)

使用int.TryParse()而不是捕获更昂贵的异常。 TryParse返回一个布尔值,指定转换是失败还是成功。它还将转换后的值作为输出参数返回。

int result = 0; 
string input = "abc";
if (int.TryParse(input, out result))
{
   //Converted value is in  out parameter
}
else
{
   //Handle invalid input here
}

答案 2 :(得分:0)

这是你在找什么?

int i = 0;
if (Int32.TryParse (textbox.Text, out i)) 
{
    // i is good here
}
else 
{
    // i is BAD here, do something about it, like displaying a validation message
}

答案 3 :(得分:0)

textBox1.Text = "abc";
try
{      
  int id = Convert.ToInt(textBox1.Text);
}
catch(FormatException ex)
{
   MessageBox.Show(textBox1.Text);
}