在 .NET 中从 SQL Server 捕获 RAISERROR

2023-12-02

我在 SQL Server 中有一个存储过程,每当满足条件时就会引发错误。为了捕获此错误并将其显示给用户,我使用

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

这涵盖了大多数情况,但另一方面,这个过程有一些问题print也被这个捕获的消息Exception。有没有办法捕获仅从RAISERROR并忽略这个print来自 SQL Server 的消息?


命令执行期间生成的所有信息和错误消息都会被缓冲,并且在命令执行期间可用异常被抓住了。 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());
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 .NET 中从 SQL Server 捕获 RAISERROR 的相关文章

随机推荐

  • C# - 异步返回值

    private TaskCompletionSource
  • Xdebug 异常类的方法

    是否可以看到 Xdebug 创建的扩展 Exception 类的方法 我想获取 HTML 格式的堆栈跟踪 因此 在破解之后 没有像 Niels 展示的那样的方法 但有一个名为 exception gt xdebug message 的公共属
  • 添加谷歌服务 - 任务“:app:processDebugResources”执行失败

    我正在尝试按照此网站上的步骤在 Android Studio 中实现 GCM 客户端 在 Android 上实现 GCM 客户端 正如 设置 Google Play 服务 中提到的 我编辑了应用程序的 build gradle 文件 使其看
  • ThreeJS 中的弯曲文本对象

    有this回购协议this例如 它已经有近 2 年历史了 因此不适用于 ThreeJS 的最新版本 我遇到以下错误和警告 error THREE Matrix3 getInverse no longer takes a Matrix4 ar
  • Python - 打印列表中既没有逗号也没有撇号的项目

    我的代码的最小工作示例 Create output data file out data file open output file w out data file write Header n out data file close li
  • 恰好具有 k 个颜色边的生成树

    我有一个连通的无向图 其边为黑色或白色 并且有一个整数 k 我正在尝试编写一个算法来判断是否存在具有正好 k 个黑边的生成树 不一定必须找到实际的树 我使用克鲁斯卡尔算法来查找生成树中黑边的最小和最大可能数量 如果 k 超出此范围 则不存在
  • 手动触发IOptionsMonitor<>.OnChange

    在 ASP NET Core 2 1 中 我使用 IOptionsMonitor 并对其进行设置 以便我可以在更改 appSettings json 文件时成功获取事件 所以这是有效的 我现在想做的是通过代码手动更改选项中的一些值 并触发我
  • 带有数据流的 Apache Beam Go SDK

    我一直在使用 Go Beam SDK v2 13 0 但无法获取字数统计示例致力于 GCP 数据流 它进入崩溃循环尝试启动org apache beam runners dataflow worker DataflowRunnerHarne
  • C++:typeid 忽略低级 const 引用,但不忽略指针

    考虑以下代码 int main const int i 42 auto p i p is const int const is low level const auto q i q is const int reference to con
  • 计算三角形第三个点的坐标

    好吧 我知道这听起来应该在 math stackoverflow com 上问 但这是我在高中时忘记的令人尴尬的简单数学 而不是高级研究生的东西 我正在做一些图形编程 我有一个三角形 顺便说一句 这个三角形的两条边相等 但我不确定这是否相关
  • Oracle SQLPLUS - 当假脱机超过 50,000 条记录时,如何仅输出一次标头?

    我正在将一个大结果假脱机到磁盘 并且只想包含一次标头 我只需要一次标题 而不是每 50 000 条记录 根据文档 在第二次打印标题之前 我似乎限制为 50 000 条记录 根据文档 50 000 是最高值 我尝试将页面大小设置为零并打开标题
  • 将 ASP.NET MVC HttpContext 发送到 Web Api HttpContext

    我正在尝试上传文件 并且想将当前的 MVC HttpContext Current Request Files 传递给 Web API 我试图通过HttpFileCollectionBase作为参数将其传递给 API 但它始终为 null
  • 为什么 python 字典会改变顺序?

    python3 5中字典中存储的对象的顺序随着解释器的不同执行而变化 但对于同一个解释器实例似乎保持不变 python3 lt printf print a 1 b 2 nprint a 1 b 2 nprint a 1 b 2 nprin
  • 如何使用点列表的 (x,y) 坐标绘制网络 x 图?

    我有 x y 点 我想使用点列表的 x y 坐标来绘制图形 以便我可以看到轴 这是我的代码和图表照片 import networkx as nx import matplotlib pyplot as plt def add edge to
  • 如何使用 Jackson 正确解析流式 JSON?

    我正在尝试找出一种用 Jackson 解析流式 JSON 的干净方法 流 就像 TCP 中那样 离线 以零碎的方式进行 没有任何保证在单次读取中接收完整的 JSON 数据 也没有消息框架 此外 目标是异步执行此操作 这排除了依赖 Jacks
  • Fortran 2008 是否向后兼容以前的 Fortran 版本?

    是的 我知道 这不是想象的 这是一个真正的 Fortran 问题 我所说的早期版本是指 Fortran 2003 95 90 甚至 77 向后兼容是指可以轻松运行为 2008 年以前版本编写的代码 只需对语法进行一些细微的更改 Fortra
  • 为什么亚马逊广告报告 API 返回 .bin 而不是 .json

    我正在向亚马逊广告 API 请求一份赞助产品报告 当我发送 POST 时 我收到了 reportID 我输入 reportID 作为 GET 调用的路径的一部分来检索文档 我观察到类型 20 的响应 但是响应的内容是二进制代码 我认为 文档
  • C# 检查字符串是否为数字的代码

    我正在使用 Visual Studio 2010 我想检查一个字符串是否是数字 是否有任何内置函数来检查这一点 或者我们是否需要编写自定义代码 你可以使用int TryParse方法 例子 string s int result if in
  • DirectShow USB 网络摄像头更改视频源

    嘿 我正在尝试找到将我的网络摄像头上的视频源更改为 复合 的设置 似乎如果我拔掉 USB 然后重新插入并启动代码 它就会出现一个空白屏幕 但是 一旦我更改视频源 在另一个程序中 然后返回并再次运行我的代码 它就会出现 因此 我需要一些可以让
  • 在 .NET 中从 SQL Server 捕获 RAISERROR

    我在 SQL Server 中有一个存储过程 每当满足条件时就会引发错误 为了捕获此错误并将其显示给用户 我使用 try code catch Exception e return BadRequest e Message 这涵盖了大多数情