仅捕获sql azure中的编程错误

时间:2015-03-30 12:41:50

标签: c# sql azure

我的工作者角色中有这样的代码:

           try
           {
                using (var connection = new SqlConnection(connectionString))
                {
                     connection.Open();
                    //...
                    sqlCommand.ExecuteNonQuery();
                }
           }
           catch (SqlException sqlEx)
           {
           }

我想在这里只捕获编程错误而不是来自数据库连接问题或限制的东西。

有没有办法检查它并只过滤真正的数据库相关问题,例如约束违规?

2 个答案:

答案 0 :(得分:0)

  catch (SqlException sqlEx)
           {
           }

上面的代码将捕获所有异常。 过滤掉消息将是一个复杂的设置。

enter image description here

  

建议抓住问题而不是压制它们

答案 1 :(得分:0)

您可以选择使用SqlException.Number根据错误类型进行投掷。请参阅https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlexception.number.aspxhttps://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属性的包装器