不提出异常

时间:2012-10-19 13:24:33

标签: c# sql-server raiseerror

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

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

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

感谢。

4 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

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

 RAISERROR ('Message here', 16, 1)

[Details here]

  

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

     

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

     

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

     

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

答案 2 :(得分:1)

我相信你需要更高的严重程度;尝试它的严重性至少为11.此外,你使用的是ExecuteScalar - 它似乎吃异常吗?请参阅here

答案 3 :(得分:0)

您可以尝试使用THROW instruction

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