2012-11-19 91 views
-7

如何獲取未能轉換的值?一般來說,而不是在這個具體的例子中。如何獲取導致異常的值

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

價值*引起的異常*? –

+1

我認爲他的意思是試試catch .. –

+5

'我認爲他的意思是......'這是問題的問題...... –

回答

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)); 
} 
+0

有些幫助? –

+3

@NomanNasir你是什麼意思? –

+0

@NomanNasir,我現在根據我認爲你在...之後更新了我的答案(在黑暗中磕磕碰碰) –

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 
} 
+1

是的,例外情況(相對)昂貴,但如果實際生成異常並拋出。 –

+1

是的,這就是我的意思。這就是爲什麼使用邏輯異常是不好的做法。 – rro

+0

我需要獲得無法轉換的值。在捕獲部分 –

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 
} 
0
textBox1.Text = "abc"; 
try 
{  
    int id = Convert.ToInt(textBox1.Text); 
} 
catch(FormatException ex) 
{ 
    MessageBox.Show(textBox1.Text); 
}