gpt4 book ai didi

c# - RAISERROR―如何与SqlException区分?

转载 作者:太空狗 更新时间:2023-10-29 17:37:14 26 4
gpt4 key购买 nike

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

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

2) 每当我显式使用 RAISERROR 时发生的错误。

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

最佳答案

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

如果使用文本字符串错误消息调用 RAISERROR,则 Number 将为 50000。

关于c# - RAISERROR―如何与SqlException区分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6509209/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com