我有一个包含以下代码的存储过程:
IF @somevar IS NULL
BEGIN
RAISERROR (N'Station %d does not exist.', -- Message text.
10, -- Severity,
7, -- State,
@id);
END
我想在C#代码中捕获SqlException。但是没有提出这个例外。我究竟做错了什么?
感谢。
答案 0 :(得分:3)
我会尝试查看您使用的严重程度。 http://msdn.microsoft.com/en-us/library/ms178592.aspx
答案 1 :(得分:2)
试试这个: - 我一直使用16
RAISERROR ('Message here', 16, 1)
0-9 返回状态信息或报告的信息性消息 不严重的错误。数据库引擎不会引发系统 严重程度为0到9的错误。
10 返回状态信息或报告的信息性消息 不严重的错误。出于兼容性原因,数据库 在返回错误之前,引擎将严重性10转换为严重性0 调用应用程序的信息。
11-16 表示可由用户更正的错误。
20-24 表明系统问题并且是致命错误,这意味着 正在执行语句或批处理的数据库引擎任务是否 运行时间更长该任务记录有关发生的事件的信息 然后终止。在大多数情况下,应用程序连接到 数据库引擎的实例也可以终止。如果发生这种情况 根据问题,应用程序可能无法执行 重新连接。此范围内的错误消息可能会影响所有 进程访问同一数据库中的数据,并可能指示a 数据库或对象已损坏。具有严重性级别的错误消息 从19到24写入错误日志。
答案 2 :(得分:1)
我相信你需要更高的严重程度;尝试它的严重性至少为11.此外,你使用的是ExecuteScalar - 它似乎吃异常吗?请参阅here。
答案 3 :(得分:0)
您可以尝试使用THROW instruction