2012-03-22 165 views
1

可能重複:
How to catch exceptions的try/catch異常

我還沒有真正有使用嘗試和捕捉異常。我正嘗試使用try/catch來捕獲潛在的錯誤。現在我不知道在哪裏把嘗試,趕上這是我現在所擁有的代碼..

divide d; 
    private void button1_Click(object sender, EventArgs e) 
    { 
     d = new divide(int.Parse(textBox1.Text), int.Parse(textBox2.Text)); 
     int total = d.CalculateDivision(); 
     MessageBox.Show(total.ToString()); 
    } 

現在我把它放在這裏

try 
{ 

} 
catch 
{ 
MessageBox.Show("error"); 
} 

或我想補充的嘗試/捕捉代碼中的某處。

+0

在哪裏的問題?什麼是「新分水嶺」? – gdoron 2012-03-22 09:57:02

+1

你知道try/catch有點貴。因此,您可以使用TryParse API並對上述代碼進行一些重構以避免出現異常。 – Zenwalker 2012-03-22 09:57:33

+0

如果它的web應用程序可以在Global.asax中使用Application_Error事件..請參閱http://stackoverflow.com/questions/9806832/general-exception-handling-without-global-asax-file – Flowerking 2012-03-22 09:57:37

回答

2

看到http://msdn.microsoft.com/en-us/library/ms173160.aspx

try善有善報在拋出異常的代碼,該值被處理。在你的例子中:

divide d; 
private void button1_Click(object sender, EventArgs e) 
{ 
    try 
    { 

    d = new divide(int.Parse(textBox1.Text), int.Parse(textBox2.Text)); 
    int total = d.CalculateDivision(); 
    MessageBox.Show(total.ToString()); 
    } 
    catch(Exception) 
    { 
    MessageBox.Show("error"); 
    } 
} 

因爲你只能顯示總數,如果沒有例外。

1

不,那是對的;)。 只是用它像什麼,你給我們有:

try 
{ 
    // Your Code. 
} 
catch (Exception ex) 
{ 
    MessageBox.Show(ex); 
} 
0

你會做這樣的事情:

private void button1_Click(object sender, EventArgs e) 
{ 
    try 
    { 
     d = new divide(int.Parse(textBox1.Text), int.Parse(textBox2.Text)); 
     int total = d.CalculateDivision(); 
     MessageBox.Show(total.ToString()); 
    } 
    catch(Exception error) 
    { 
     MessageBox.Show(error.Message); 
    } 
} 
1

你很可能答案,如果有異常被拋出雖然你可以做到這一點,以獲取有關更多信息,什麼可能導致它:

try 
{ 
    //your code: 
    d = new divide(int.Parse(textBox1.Text), int.Parse(textBox2.Text)); 
    int total = d.CalculateDivision(); 
    MessageBox.Show(total.ToString()); 
} 
catch (Exception ex) 
{ 
    MessageBox.Show("Error has occured! " + ex.Message); 
} 

另一個技巧爲你看到你正在學習異常處理是採取看看終於塊,這樣會得到執行是否存在是一個例外,這是不言而喻的try和catch塊後:

finally 
{ 
    // this code will always execute, maybe do some cleanup here 
}