我的工作者角色中有这样的代码:
try
{
using (var connection = new SqlConnection(connectionString))
{
connection.Open();
//...
sqlCommand.ExecuteNonQuery();
}
}
catch (SqlException sqlEx)
{
}
我想在这里只捕获编程错误而不是来自数据库连接问题或限制的东西。
有没有办法检查它并只过滤真正的数据库相关问题,例如约束违规?
答案 0 :(得分:0)
catch (SqlException sqlEx)
{
}
上面的代码将捕获所有异常。 过滤掉消息将是一个复杂的设置。
建议抓住问题而不是压制它们
答案 1 :(得分:0)
您可以选择使用SqlException.Number
根据错误类型进行投掷。请参阅https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlexception.number.aspx和https://msdn.microsoft.com/en-us/library/cc645603.aspx。
例如:
catch(SqlException sqlEx) {
if (sqlEx.Number == expectedException) {
//don't throw
} else {
throw;
}
}
注意:您可能还想检查SqlException.Errors中的每个错误号,以便更加小心。每SqlException.Number个文档:
这是Errors属性
中第一个SqlError的Number属性的包装器