2

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

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

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

谢谢。

4

4 回答 4

3

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

于 2012-10-19T13:30:50.830 回答
2

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

 RAISERROR ('Message here', 16, 1)

[这里的详细信息]

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

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

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

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

于 2012-10-19T13:38:11.627 回答
1

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

于 2012-10-19T13:30:42.687 回答
0

你可以试试THROW instruction

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

于 2012-10-19T13:28:54.090 回答