处理sql异常的策略应该是什么?

2023-12-23

我有一个多层应用程序。 DAL -> BAL -> 业务网关 -> UI。 如果DAL发生外键或唯一约束异常,我们应该如何识别这是哪个异常以及向用户显示什么错误消息。我们应该使用错误号来识别这一点吗?

第二个问题:我们应该如何将此错误传播给 UI。我们正在考虑将此异常抛出给 BAL,BAL 将封装错误并向 UI 返回响应(不是异常)。这是正确的方法吗?


DAL 异常应该由 BAL 处理并重新抛出(作为自定义异常)。您应该将其序列化并通过您正在使用的通信通道发送到您的 UI。

您不需要向用户显示确切的错误或错误号,因为这会形成不良的用户体验。你可以告诉他们你无法在数据库中执行该操作。您可以在某些日志文件或 Windows 事件日志中记录详细信息。

EDIT:SqlException 有错误代码,您可以在 DAL 中检查该错误代码,然后根据该错误代码引发特定异常。您的 DAL 将 SQL Server 抽象为后端存储,因此 SqlException 不应泄漏到 DAL 之外。因此,在 DAL 中检查 ErrorCode 并抛出特定的异常。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

处理sql异常的策略应该是什么? 的相关文章

  • 地图类容器的专用功能

    我想要专门为矢量和地图之类的容器设计一个函数模板 对于向量 我可以像下面那样做 但我不知道如何才能有一个专门版本的函数 该函数仅用于像地图这样的容器 include
  • 如何获取枚举数作为常量?

    From 枚举中定义的项目总数 https stackoverflow com questions 856154 total number of items defined in an enum 我发现我可以使用以下方法获取枚举数 Enum
  • 以编程方式更新 Wifi 网络

    我正在尝试创建一个程序 当某个 wifi 网络在范围内时 该程序会连接到该网络 即使已经连接到另一个 wifi 也是如此 我在用着简单Wifi https github com DigiExam simplewifi 基本上效果很好 除了在
  • 图片框、双击和单击事件

    我有一个奇怪的问题 我有一个图片框双击事件以及单击事件 问题是即使我双击该控件 也会引发单击事件 如果我禁用单击事件 则双击事件正在工作 这个问题已经在这里讨论过 https stackoverflow com questions 1830
  • MVC BaseController 处理 CRUD 操作

    我想重构我的基本 CRUD 操作 因为它们非常重复 但我不确定最好的方法 我的所有控制器都继承 BaseController 如下所示 public class BaseController
  • 使用c#在mac上启动外部进程

    我成功地使用 System Diagnostics Process Start 在 Windows 上启动我的外部单声道可执行文件 然而在mac上却失败了 我没有收到任何错误 只是什么也没发生 我尝试按以下方式进行操作 System Dia
  • 如何在 Windows 上的 GCC 中链接 CS50 C 库

    我是 编程新手 一直在尝试使用以下命令编译我的代码MinGW https en wikipedia org wiki MinGW GCC 但我尝试包括CS50 https en wikipedia org wiki CS50 cs50 c
  • 仅使用一个 #include 表达式一次包含多个头文件?

    是否有任何表达式可以使语法一次包含多个标头 而无需为每个新文件编写 include 表达式 例如 include
  • 如何查看每秒更新的图表中的最后 10 个数据点?

    我有这个代码 private void timer Tick object sender EventArgs e timer Stop for int i 0 i lt TOTAL SENSORS i DateTime d DateTime
  • 这个finally子句包含close()调用的原因是什么

    我正在学习在线java课程 使用 Java 编程简介 http math hws edu javanotes index html 在 I O 章节中 引入了以下代码 顺便说一下 在本程序的末尾 您将发现我们第一个有用的 try 语句中的
  • 大小为 k 的非连续子序列的最大值的最小值

    在开始之前 我希望这个问题不是重复的 我发现了几个类似的问题 但它们似乎都没有描述完全相同的问题 但如果它是重复的 我会很高兴看到一个解决方案 即使它与我的算法不同 我一直在尝试回答这个问题 https stackoverflow com
  • 向客户端发送状态码 500 时页面未呈现

    我有一个页面 通用处理程序 我想在该页面上向客户端返回状态代码 500 以指示出现问题 我这样做 Response StatusCode 500 Response StatusDescription Internal Server Erro
  • 批量插入,asp.net

    我需要获取与会员相对应的 ID 号列表 在任何给定时间处理的数量可能在 10 到 10 000 之间 我可以毫无问题地收集数据 解析数据并将其加载到 DataTable 或任何内容 C 中 但我想在数据库中执行一些操作 将所有这些数据插入表
  • Qt - 添加超链接到对话框

    有没有办法在 Qt 对话框中添加可点击的超链接 IE 它应该看起来像一个超链接 蓝色文本 当您单击它时 它应该在浏览器中打开该超链接 像这样的东西 Use QLabel setOpenExternalLinks bool 并在标签上设置文本
  • 检测到 ASP.NET 网页版本冲突:指定版本为“1.0.0.0”,但 ASP.MET MVC 3 中 bin 中的版本为“2.0.0.0”

    安装 microsoft web helper 后出现以下错误 检测到 ASP NET 网页版本冲突 指定版本为 1 0 0 0 但 bin 中的版本为 2 0 0 0 要继续 请从应用程序的 bin 目录中删除文件或删除 web conf
  • TCP/IP 传输期间套接字数据损坏

    当我通过预连接的 TCP IP 套接字发送数据时 我发现数据已损坏 Example Station1 正在向 Station2 发送数据 我已经在发送之前 在 S1 和接收之后 在 S2 打印了数据 以下是消息 S1 发送的数据是ACKS2
  • 如何检查日期时间是否发生在今天?

    有没有比下面的代码更好的 net 方法来检查 今天 是否发生了 DateTime if newsStory WhenAdded Day DateTime Now Day newsStory WhenAdded Month DateTime
  • 在for循环中声明和初始化变量

    可以简单写一下吗 for int i 0 代替 int i for i 0 在 C 或 C 中 并且会变量i只能在循环内部访问 它在 C 中有效 它在 C 的原始版本中是不合法的 但在 C99 中被采用为 C 的一部分 当时一些 C 功能被
  • 如何正确处置注入的DLL线程?

    我将一个 DLL 注入到目标进程中 以在玩 MMORPG 时充当助手 当前功能将按键转换为鼠标点击 因为 MMORPG 要求用户移动鼠标才能实现某些功能 这是我所鄙视的 假设我出于某种原因想要取消注入 DLL 我该怎么做呢 这个方法干净吗
  • 在派生类中访问基类变量

    class Program static void Main string args baseClass obj new baseClass obj intF 5 obj intS 4 child obj1 new child Consol

随机推荐

  • Mac OS X 上有好的图形化 Git 和 Hg/Mercurial 客户端吗?

    我正在 Mac OS X 上寻找引人注目的 Git 和 Mercurial 客户端 到目前为止 我发现的大多数客户端都没有我预期的那么引人注目 有些客户端甚至是用 Ruby 或 Tcl Tk 编程的 在我看来 这些客户端在操作系统集成方面并
  • OS X 终端在运行“source kvm.sh”后挂起安装 vNext KVM

    我正在尝试在我的 Macbook 上安装 vNext 但是当我运行时source kvm sh终端挂起 我的设置 OSX 10 9 5 小牛队 单声道3 10 0 我的问题 我按照 GitHub 存储库中在 OS X 上安装 vNext 的
  • “创建新的视觉类”按钮在 Eclipse 上不可点击

    我安装了一个新的 GUI 设计器软件 然后按要求重新启动了 eclipse 但是当 eclipse 重新打开时 我无法单击 创建新的视觉类 按钮 它是可点击的 但它不执行任何操作 我必须单击它才能安装工具包并创建新的 jframe 我从以下
  • 针对玩笑中抛出的错误对象进行断言

    我有一个抛出对象的函数 我如何断言开玩笑地抛出了正确的对象 it should throw gt const errorObj myError name myError desc myDescription const fn gt thro
  • 如何让 karma 浏览器使用深色主题?

    我开始在 Angular 应用程序中使用 karma 并希望将浏览器主题更改为深色 我想知道配置文件中是否有任何地方可以注入简单的 css 或使用添加 js 文件来注入这些样式 例如业力风格 js var css html backgrou
  • 使用全日历以 3 天的事件块跳过周末和分割日

    我有一个关于名为 fullcalendar 的插件的问题 可以在此处查看https fullcalendar io docs event data https fullcalendar io docs event data 我想要实现的是对
  • Weka中的堆叠算法是什么?它实际上是如何运作的?

    基础分类器的结果是由投票系统选择的 然后元分类器在输入时实际上得到了什么 整个分类器还是只是错误分类的分类器 如果可以用像这个链接这样的简单示例来解释整个机制 那将会很有帮助Weka classifiers meta vote 中的多数投票
  • 如何使用迁移的 HTML 内容为 Gatsby 创建博客条目

    我正在尝试迁移博客 并且可以提取 HTML 格式的帖子以及标题 关键字 数据 元描述等 我如何使用它们在 GatsbyJS 中创建博客文章 我只能找到使用 Markdown 的说明 由于复杂的格式和一些内联 CSS 样式 手动迁移数百个并将
  • 使用正则表达式格式化电话号码[重复]

    这个问题在这里已经有答案了 可能的重复 用于电话号码验证的综合正则表达式 https stackoverflow com questions 123559 a comprehensive regex for phone number val
  • 字段只读和组属性

    我希望在 Openerp 6 1 视图中将字段设置为只读 我希望该字段对于除特定组之外的所有组都是只读的 假设经理应该能够编辑它 而其他人应该只能查看 我不清楚如何在视图中做到这一点 请建议 谢谢 你只需创建一个功能域 http doc o
  • 在渲染组件之前运行 useEffect 钩子

    我在 App js 文件中使用了一个 useEffect 挂钩 它将数据放入我需要在我的应用程序中使用的 redux 存储中 但它在 useEffect 运行之前渲染 因此数据未定义 useEffect 然后正确运行 我需要 useEffe
  • 在 bootstrap-datetimepicker 中设置默认时间

    我想设置默认时间这个日期时间选择器 http tarruda github io bootstrap datetimepicker as 00 01当前日期 以前有人尝试过吗 经历了一段艰难的时期 看起来很简单 startdatetime
  • Form2上Form1的C#访问方法

    我的项目中有 2 个表格 Form1 是主窗体 在那里 我有一个用于打开 Form2 的按钮 一个 ListView 和一个调用 url 并向 ListView 提供从 url 获取的数据的方法 Form2 有一个 URL 文本框和一个 确
  • 使用 tweepy 的流式 api 仅返回倒数第二条推文,而不返回最后一条推文

    我不仅对 python 很陌生 而且对编程都很陌生 所以我非常感谢你的帮助 我正在尝试使用 Tweepy 过滤检测来自 twitter 流 API 的所有推文 我已按用户 ID 进行过滤 并确认推文正在被实时收集 HOWEVER 看来只有最
  • Rails 6 Zeitwerk“弃用警告:初始化自动加载常量...”,但我不知道在哪里?

    我发誓我已经阅读了这些文档 并且我认为我对这些原理有了基本的了解 但我一生都无法弄清楚我在哪里不恰当地加载了这些常量 我正在升级一个最初是 Rails 5 2 的应用程序 当我运行 RSpec 服务器 本地控制台等时 我收到此警告 DEPR
  • 如何从 PySide QAbstractItemModel 子类向 QML ListView 提供数据?

    我正在 PySide 中编写一个具有 QML UI 的应用程序 我在 Python 中对 QAbstractListModel 进行了子类化 class MyModel QtCore QAbstractListModel def init
  • VBA过滤和发送电子邮件

    我正在尝试自动化我们发送给各个堆栈持有者的电子邮件过程 我想根据公司代码过滤D列并将电子邮件发送给O列中列出的人员 电子邮件不应重复 并且还需要包含抄送 不重复 下面是正在尝试的VBA 但无法包含TO和CC Sub Send Row Or
  • Python 2 与 Python 3 - 三个参数的映射行为有何差异?

    以下代码在 Python 2 和 Python 3 中的行为有所不同 all map lambda x y x 1 2 1 2 3 Python 2 给出False而Python 3给出了True The 文档 https docs pyt
  • jquery.inArray() 与 Object.hasOwnProperty() 之间的性能差异?

    我有一种情况 我可以选择将字符串键的集合实现为对象 each objects function key object collection key doesn t matter 或一个数组 each objects function key
  • 处理sql异常的策略应该是什么?

    我有一个多层应用程序 DAL gt BAL gt 业务网关 gt UI 如果DAL发生外键或唯一约束异常 我们应该如何识别这是哪个异常以及向用户显示什么错误消息 我们应该使用错误号来识别这一点吗 第二个问题 我们应该如何将此错误传播给 UI