RAISERROR―如何与SqlException区分?

2023-11-27

我有一些 3-4 个存储过程——如果需要的话我可以修改它们——使用RAISERROR通知我的应用程序数据库方面的一些致命错误。其中一些存储过程是从 C# 端执行的ExecuteNonQuery,而其他则执行ExecuteReader。目前,我将这些命令包装在try { ... } catch (SqlException ThisSqlException) { ... }块,但问题是,至少在我必须单独处理的两种情况下会抛出此异常:

1) 连接本身错误,或者参数错误或类型不匹配;和

2)使用时出现的错误RAISERROR明确地。

由于这是一个 WCF 应用程序,我必须根据异常的性质(是否由于异常)向客户端应用程序返回不同的反馈RAISERROR命令与否)。那么我该如何区分这两种情况呢?


The RAISERROR command包含一个 msg_id 参数,可用于识别错误类型。该值通过以下方式提供给应用程序SqlException.Number财产。通过这种方式,您可以识别存储过程引发的任何异常,其中包括系统中定义的自定义错误消息。

If RAISERROR被调用并带有文本字符串错误消息,然后Number将是 50000。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

RAISERROR―如何与SqlException区分? 的相关文章

随机推荐