我们在数据库表中有错误消息列表,当我们遇到一些业务验证错误时,我们从表中获取这些错误消息。 例如如果在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的缺点。
请指导我。
答案 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,因为它有行业标准和最佳做法来处理错误消息和详细说明的文字。