【发布时间】:2016-11-16 03:28:28
【问题描述】:
这是我的名为“uspTest”的存储过程代码
BEGIN TRY
SELECT 3 / 0;
END TRY
BEGIN CATCH
RAISERROR('D', 16, 3);
END CATCH
这是我在 Visual Studio 中的 c# 代码
public IHttpActionResult RegisterUser(RegisterModelView registerViewModel)
{
try
{
using (AusHerbEntities ctx = new AusHerbEntities())
{
ctx.uspTest();
Console.Write("i am in try block");
}
}
catch (Exception e)
{
Console.Write(e.Message);
}
return Ok();
}
当我运行这段代码时,C# 代码中的 Catch 块没有被调用,但我希望它会被调用,因为存储过程会引发错误。
我怎样才能让这段代码工作?
我只想在存储过程的 catch 块中做 RAISERROR 并在 c# 代码中捕获错误。
【问题讨论】:
-
您的代码似乎在做您认为应该做的事情。你有没有设置断点看看会发生什么?
-
我也可以确认,sql 中的语法看起来是正确的。你可以检查这个问题,我不知道这是不是你的问题:stackoverflow.com/questions/33502318/…
-
我刚刚又试了一次还是不行,执行存储过程的tread已经过期,0表示没有抛出异常?
-
#Sean Lange 是的,它不会调用 catch 块
-
如果您只在您的
uspTest中输入RAISERROR('D', 16, 3);会引发错误吗?
标签: c# sql-server