【问题标题】:Exception is not raised未引发异常
【发布时间】:2012-10-10 03:02:37
【问题描述】:

我有一个包含以下代码的存储过程:

IF @somevar IS NULL
BEGIN
RAISERROR (N'Station %d does not exist.', -- Message text.
       10, -- Severity,
       7, -- State,
       @id); 
END

我想在 C# 代码中捕获 SqlException。但是没有提出这个例外。我究竟做错了什么?

谢谢。

【问题讨论】:

    标签: c# sql-server raiseerror


    【解决方案1】:

    我会尝试查看您使用的严重性。 http://msdn.microsoft.com/en-us/library/ms178592.aspx

    【讨论】:

      【解决方案2】:

      试试这个:-我一直使用 16

       RAISERROR ('Message here', 16, 1)
      

      [Details here]

      0-9 返回状态信息或报告的信息性消息 不严重的错误。数据库引擎不提升系统 严重性为 0 到 9 的错误。

      10 返回状态信息或报告的信息性消息 不严重的错误。出于兼容性原因,数据库 引擎在返回错误之前将严重性 10 转换为严重性 0 调用应用程序的信息。

      11-16表示可以由用户纠正的错误。

      20-24 表示系统问题,是致命错误,这意味着 正在执行语句或批处理的数据库引擎任务不是 运行时间更长。该任务记录有关发生的事情和 然后终止。在大多数情况下,应用程序连接到 数据库引擎的实例也可能终止。如果发生这种情况, 根据问题,应用程序可能无法 重新连接。此范围内的错误消息会影响所有 进程访问同一数据库中的数据,并可能表明一个 数据库或对象已损坏。具有严重性级别的错误消息 从 19 到 24 被写入错误日志。

      【讨论】:

        【解决方案3】:

        我相信您需要更高的严重性级别;以至少 11 的严重性尝试它。另外,您是否使用 ExecuteScalar - 它似乎吃异常?见here

        【讨论】:

          【解决方案4】:

          你可以试试THROW instruction

          链接:http://msdn.microsoft.com/fr-fr/library/ee677615.aspx

          【讨论】:

            猜你喜欢
            • 2019-03-02
            • 1970-01-01
            • 1970-01-01
            • 2014-03-02
            • 2013-01-29
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-06-06
            相关资源
            最近更新 更多