【发布时间】:2017-12-06 13:13:50
【问题描述】:
我为我的应用程序编写了许多存储过程。一些存储过程根据项目要求返回验证异常,而在某些情况下,存储过程返回未处理的致命错误,例如
“外键引用错误”、“期望参数未提供”等
现在我需要区分我的 C# 代码中的这些错误。如果出现未处理的致命错误,我需要在数据库中插入错误日志。
关于如何区分这两种类型的任何建议。
注意:我使用 RAISERROR 语句返回验证异常,例如
RAISERROR(@ErrorMsg,16,1)
更新 1:
我想每个人都错误地解释了我的实际问题。 我可能会从 SP 中的查询执行中获得用户定义的验证异常(由 RAISERROR stmt 返回)或致命错误。我需要在我的 C# 代码中区分这两种类型。这两个异常都在
中捕获catch (SqlException ex)
块。经过一番研究,我发现 ex.Number 在用户定义的验证异常的情况下为 50000,而在其他情况下则不同。
我正在考虑为此写条件。如果有任何更清洁的方法,请提出建议。
【问题讨论】:
-
try and catch 是打印您提到的错误的方法。您可以在其中处理您的错误 catch 并可以插入到您的日志中。
-
你可以有多个 catch 块。您可以首先捕获任何 SQLException,这些将是您的 sql 执行的错误。然后是另一个 catch 块,之后将能够捕获任何其他未处理的异常。
标签: c# sql-server sql-server-2012