从中的SQL Server捕获RAISEROR.NET



我在SQL Server中有一个存储过程,每当遇到条件时就会抛出错误。为了捕捉这个错误并将其显示给用户,我使用

try 
{
//code
} 
catch (Exception e)
{
return BadRequest(e.Message);
}

这捕获了大多数情况,但另一方面,此过程有一些print消息也被此Exception捕获。是否有一种方法可以捕获仅从RAISERROR抛出的异常并忽略来自SQL Server的此print消息?

在命令执行期间生成的所有信息和错误消息都会被缓冲,并且在捕获SqlException时可用。Message属性包括所有信息消息的文本(打印严重性小于11的语句和错误(以及导致异常的警告/错误。

要忽略信息消息,请使用SqlException Errors集合,并仅处理严重性(SqlError.Class属性(为11或更高的消息:

catch (SqlException e)
{
var sb = new StringBuilder();
foreach(var error in e.Errors)
{
if(error.Class > 10) sb.AppendLine(error.message);
}
return BadRequest(sb.ToString());
}

相关内容

  • 没有找到相关文章

最新更新