在下面的代码中,我故意将“@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();
}
答案 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”列并取消标记您不希望导致调试器自动中断的某些异常。