编写自定义异常类需要考虑哪些因素?

2023-11-25

什么时候自定义异常类最有价值?
是否存在应该或不应该使用它们的情况?有什么好处?

相关问题:

  1. 抛出异常的性能注意事项
  2. 您是否为特定问题编写例外情况或一般例外情况?

要问自己的问题:

  1. 谁会抓住它?如果没有人,那么您实际上并不需要自定义异常。
  2. 你会把它扔到哪里?是否有足够的可用上下文,或者在异常对最终捕获器有用之前您需要捕获并重新抛出几次?
  3. 你为什么要扔它?因为您捕获了异常并需要附加附加信息?因为您在某些数据中遇到了不可恢复的错误,并且需要将具体情况传达回客户端代码?因为你喜欢throw荷兰国际集团的东西?
  4. 什么是例外?不是造成它的原因,而是它是什么从捕手的角度来看?他们可以修复并重试什么吗?他们应该做的事never重试?他们应该通知用户什么?他们应该附加上下文信息然后重新抛出的东西?What确定您需要传递的信息(如果有)...

戒律:

  1. 不要将时间浪费在永远不会被捕获的自定义异常上。
  2. 不要“双重”异常:每个自定义异常类型都应该有一个明确定义的情况,可以并且应该捕获它;不匹配的异常应该分解成它们自己的自定义类型(而不是强制捕获器将条件逻辑构建到单个catch()条款)。
  3. 除非你有一个good不这样做的原因是,始终允许附加来自先前捕获的异常的内部异常/数据。失去背景几乎没有帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

编写自定义异常类需要考虑哪些因素? 的相关文章

随机推荐

  • 在 ASP.NET MVC Core 中显示/编辑货币,为什么这么复杂?

    在 ASP NET Core 2 0 应用程序中 我有一个Foo与 一起上课a lot经典字符串或数字成员以及int Budget field using Microsoft AspNetCore Http using System usi
  • jQuery-File-Upload 在 Internet Explorer (IE9) 中未触发完成回调

    我检查了有关同一问题的一些问题 blueimp jquery 文件上传 完成 完成 回调不适用于 IE 9 但即使将我的 Content Type 设置为 text html 作为响应 done 回调也不会被触发 另外 正如 jQuery
  • 在 Python 中嵌入 Matplotlib 动画(谷歌 colab 笔记本)

    我正在尝试在 google 的 colab research 中显示 gif 文件 我能够将文件保存在具有以下路径名的目录中 content BrowniamMotion gif但我不知道如何在我的笔记本中显示这个 GIF 来呈现 到目前为
  • 如何将 JCIFS 与 apache VFS 结合使用来访问 SMB URL?

    我正在尝试使用 smb URL 访问本地计算机上的文件夹 我的项目正在使用 jar commons vfs2 2 0 jar 和 jcifs 1 3 17 jar 以及所有其他所需的 jar 完整的代码是 public static voi
  • 谁能通俗地解释一下 JSONP 是什么? [复制]

    这个问题在这里已经有答案了 I know JSONP is JSON带衬垫 我了解 JSON 是什么以及如何使用它jQuery getJSON 不过我不太明白这个概念callback在引入JSONP时 谁能向我解释这是如何工作的 Prefa
  • 在连接的 iPhone 上启动已安装的应用程序

    我正在尝试为一些 iOS 应用程序推出自动化测试解决方案 我正在使用fruitstrap将编译的应用程序传输并安装到连接的iPhone上 但我正在努力寻找一种在安装完成后自动启动应用程序的方法 Fruitstrap 有一个在 GDB 调试器
  • 有谁知道好的ajax脚本加载器

    有谁知道ajax脚本加载器 它允许延迟加载js和css文件 并且还包含可以在外部脚本中定义的依赖项列表 为什么不使用http unwrongest com projects lazy
  • 从 Rails 的 HTML 页面生成 PDF [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我正在寻找一个将 HTML 视图页面从 Rails 转换为 PDF 的工具 我希望样式保持完整并且应该能够识别 CSS 样式 我听说过 Prince XML 和 Wicked PDF
  • 如何实现 ExecutorService 来轮流执行任务?

    我在用着java util concurrent ExecutorService with 固定线程池执行任务列表 我的任务列表通常约为 80 150 个 并且我将任何时间运行的线程数限制为 10 个 如下所示 ExecutorServic
  • 2个类可以共享一个好友功能吗?

    今天我对好友功能有疑问 两个类可以有相同的友元函数吗 说个例子friend void f1 在 A 类和 B 类中声明 这可能吗 如果是这样 函数 f1 可以访问两个类的成员吗 一个例子可以最好地解释这一点 class B defined
  • 如何使用 PHP GD 库向图像添加文本

    我在 image creator 中有图像创建代码 图像输出的文件是 image php 并具有以下代码
  • 在 github 存储库中搜索定义给定函数的文件

    我想搜索 github 上的公共存储库以查找软件定义给定函数的位置 使用高级搜索似乎应该很简单 不确定我是否不理解过滤器或者函数是否未定义 例如 假设我想找到 Hadley 的位置facet wrap函数在 ggplot2 存储库中定义 它
  • 防止 WinForm AcceptButton 处理 Return 键

    我有一个带有按钮的表单AcceptButton属性 以便在用户按 Return 键时发生逻辑并关闭表单 在该表单上 我显示一个动态创建的TextBox当用户双击某个区域时出现 然后当用户按回车键时隐藏 当用户按下 Return 键时 如何防
  • 在 OS X 上创建类似窗口的菜单

    我想创建一个相同类型的托盘菜单 例如这个应用程序 因为它在使用node webkit nw js的应用程序列表中 所以我认为这是可能的 我浏览了所有文档 但找不到任何有关如何实现这一目标的信息 谷歌搜索也没有什么结果 也许你们中的一个人以前
  • 无法实例化类:org.apache.naming.java.javaURLContextFactory

    我正在研究 Junit 测试文件 该文件加载 SQL 文件并将其加载到 Oracle 中 import java io BufferedReader import java io File import java io FileReader
  • 嵌套点击处理程序有什么不好吗?

    有人向我提到过这一点 但我从未找到任何文件来支持这一说法 在应用程序中嵌套单击处理程序是否不好 例如 div on click function Do things p on click function Do things 如果这是不好的
  • 使用 Javascript 设置日期时间格式

    我有一个日期 时间字符串 例如2012 01 13 04 37 20但我想将其转换为dd mm yyyy hh mm 我怎样才能做到这一点 我正在使用以下代码 但它抛出异常 var now 2012 01 13 04 37 20 var d
  • Regex 使用 C# 将 Markdown 内联链接转换为 HTML 链接

    我正在用 C 编写一个非常基本的 Markdown 到 HTML 转换器 我设法编写正则表达式来转换粗体和斜体文本 但我正在努力想出一段正则表达式 它可以将 markdown 链接转换为 html 中的链接标签 例如 This is a l
  • JavaScript 文化敏感的货币格式

    如何在 JavaScript 中以文化意识的方式格式化货币相关数据 所以我知道这是一个老问题 但如果其他人出现寻找类似的答案 在现代 JavaScript 中你可以使用 new Intl NumberFormat de DE style c
  • 编写自定义异常类需要考虑哪些因素?

    什么时候自定义异常类最有价值 是否存在应该或不应该使用它们的情况 有什么好处 相关问题 抛出异常的性能注意事项 您是否为特定问题编写例外情况或一般例外情况 要问自己的问题 谁会抓住它 如果没有人 那么您实际上并不需要自定义异常 你会把它扔到