Try / Catch没有抓住

时间:2011-06-01 10:09:58

标签: c# winforms exception try-catch

在下面的代码中,我故意将“@fooData”错误地输入到“@ foo111Data”以检查try语句是否正在捕获我的异常。见下面的代码。但是,try / catch语句没有在MessageBox中捕获并显示和异常,而VS2010只是分解并突出显示错误代码行。

try
{
    conn.Open();
    cmd.Parameters.AddWithValue("@foo111Data", dataStrTb1.Text);
    cmd.ExecuteNonQuery();
}
catch (SqlCeException ex)
{
    MessageBox.Show(ex.ToString());
}
finally
{
    conn.Close();
}

5 个答案:

答案 0 :(得分:8)

也许会抛出不同类型的例外?我建议您更改catch,以便它只捕获一般Exception,看看是不是扔另一种类型。

catch语句的MessageBox.Show行中放置一个断点,然后您可以检查Exception

答案 1 :(得分:7)

尝试捕获SqlException

catch (SqlException ex)
{
    MessageBox.Show(ex.ToString());
}

答案 2 :(得分:3)

而不是SqlCeException尝试捕获所有异常,看看它是如何工作的。

我实际上会使用记录器,而不仅仅是你现在正在做的消息框。

答案 3 :(得分:3)

尝试

try 
{     
conn.Open();     
cmd.Parameters.AddWithValue("@foo111Data", `dataStrTb1.Text);     
cmd.ExecuteNonQuery(); 
} 
catch (SqlException ex) 
{     
MessageBox.Show(ex.ToString()); 
}
catch (Exception ex) 
{     
MessageBox.Show(ex.ToString()); 
} 

finally 
{     
conn.Close(); 
}` 

答案 4 :(得分:2)

Visual Studio中有一项功能,可以让您在抛出异常时停止,即使它被捕获。

只需单击menuitem Debugging,然后单击Exceptions,然后单击“thrown”列并取消标记您不希望导致调试器自动中断的某些异常。