从数据库中检索错误消息的最佳做法

时间:2015-04-09 11:58:12

标签: c# database oracle11g

我们在数据库表中有错误消息列表,当我们遇到一些业务验证错误时,我们从表中获取这些错误消息。 例如如果在c#代码中,我们发现当使用代码

时,计算出的风险%大于允许值
string sError = GetErrorText(6610);  // get error message from application cache
DisplayErrorPopup(sError ); // load a popup to display error to user.

现在我们发现有些情况下我们必须从存储过程中验证一些规则。例如"没有活跃的工人主管。"

我的问题是,当在数据库中进行验证时,我们应该如何处理这种情况? A.我们是否应该返回错误文本"没有活跃的工人主管。"作为SP的param并将其传递给DisplayErrorPopup

B.返回错误ID(存在于表中),然后使用GetErrorText(834),然后将文本传递给DisplayErrorPopup;

我的担忧是 1.处理错误信息和文本的最佳做法是否有任何行业标准 2.当我们有返回数字的选项时,是否有从数据库返回字符串/ varchar的缺点。

请指导我。

2 个答案:

答案 0 :(得分:0)

我建议在SQL中抛出(引发)自定义错误(如果愿意,可以从表中选择文本)并让应用程序捕获该错误。这将允许您让应用程序根据它们的重要性决定如何处理不同的错误。

        using (SqlConnection conn = new SqlConnection(connection))
        {
            SqlCommand sqlCommand = new SqlCommand(query, conn);
            sqlCommand.CommandTimeout = timeout;
            sqlCommand.CommandType = CommandType.Text;
            conn.Open();
            object result = sqlCommand.ExecuteScalar();

            return result;
        }

在try catch块中运行上面的内容将允许您在C#app中更优雅地处理错误

答案 1 :(得分:0)

您的选项都同样正确。您可以从数据库返回错误文本,也可以返回一些错误代码并根据应用程序中的代码显示错误消息。

此外,请尝试 codeproject 中的this atricle,因为它有行业标准和最佳做法来处理错误消息和详细说明的文字。