Try / Catch没有抓住

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

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

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

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

尝试捕获SqlException

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

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

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

尝试

 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(); }` 

Visual Studio中有一个function,使您可以在抛出exception时停止,即使它被捕获也是如此。

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