断言 VS 运行时异常

2024-01-18

我正在编写 API,因此我的 API 将从外部模块中使用。这是我无法弄清楚使用断言或什么的方法之一java.lang.IllegalArgumentException

/**
 * Adds translation of information to underlying store for particular language
 * @param languageId The identifier of the language 
 * @param translation The translation provided for the specific language
 * @throws AssertionError if the provided language id is {@code null} or empty
 *         or provided translation is {@code null} or empty
 */
public final void addTranslation(String languageId, String translation){
    assert !(Strings.isNullOrEmpty(languageId));
    assert !(Strings.isNullOrEmpty(translation));

    translations.put(languageId, translation);
}

如果我使用运行时异常,我认为它可能会损害使用此 API 的应用程序的执行。如果我使用断言,那么如果断言标志被禁用,它将损害我的 API。

也尝试阅读类似的帖子何时使用断言以及何时使用异常 https://stackoverflow.com/questions/1957645/when-to-use-assertion-vs-exception。但要检测哪个案例是我的有点令人困惑。

是否有严格定义的方法,在哪里使用断言以及在哪里使用运行时异常?


断言通常是一种可以在生产中关闭的开发技术。这在 Java、Eiffel、C++ 以及我所知道的每一种使用它们的语言中都是如此。

就我个人而言,我更喜欢运行时异常来执行契约。你无法关闭它们。

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

断言 VS 运行时异常 的相关文章

  • (更好的方法)使用 Eclipse 和 XText 获取项目中的文件

    我正在编写一个 XText 编辑器 并进行一些语义突出显示 我正在解析的部分语言引用了文件 这些文件应该存在于项目中 我想根据这些文件是否位于正确的位置来突出显示 目前 我有一个非常丑陋的解决方案 但我确信有更好的方法 public voi
  • string.split("(?!^)") 解释

    我正在尝试将字符串的字符拆分为字符串数组 我找到了解决方案here https stackoverflow com questions 5235401 split string into array of character strings
  • Spring MVC - 自动查找验证器

    假设我有一个像这样的示例实体类 public class Address 和相应的验证器 Component public AddressValidator implements Validator Override public bool
  • Java中的字节和字符转换

    如果我将一个字符转换为byte然后回到char 那个角色神秘地消失了 变成了别的东西 这怎么可能 这是代码 char a line 1 byte b byte a line 2 char c char b line 3 System out
  • 如何访问EmbeddedSolrServer实例的管理界面?

    在我的网络应用程序中 我正在运行org apache solr client solrj embedded EmbeddedSolrServer出于调试目的 我想访问管理界面 这就是我实例化服务器的方式 new EmbeddedSolrSe
  • 在 Spring Webflux 中执行阻塞 JDBC 调用

    我使用 Spring Webflux 和 Spring data jpa 使用 PostgreSql 作为后端数据库 我不想在进行数据库调用时阻塞主线程 例如find and save 为了实现同样的目标 我有一个主调度程序Controll
  • JSF-2 应用程序中的服务器端计时器

    在我正在开发的 JSF 2 应用程序中 当用户执行操作时 我需要启动服务器端计时器 这个计时器必须与应用程序本身相关 因此它必须在用户会话关闭时继续存在 为了解决这个问题 我想使用 java util Timer 类在应用程序范围的 bea
  • 加密 mongodb 中的密码字段

    我有以下代码 它插入userName and password进入数据库 但密码以纯文本格式存储 我的意思是 当我查看数据库时 我可以看到插入的密码 我想存储password in encrypted format MongoClient
  • 无法删除临时文件夹(有时)

    当我启动应用程序时 我创建一个临时文件夹 public static File createTempDir String name throws IOException File tempDir File createTempFile na
  • Java:如果数组大小未知,如何初始化?

    我要求用户输入 1 到 100 之间的一些数字并将它们分配到一个数组中 数组大小未初始化 因为它取决于用户输入数字的次数 我应该如何分配数组长度 如果用户输入 5 6 7 8 9 5 个数字 则 int list becomes int l
  • 在实现接口的类上强制使用单例模式

    我最好用一个例子来解释这个问题 我有一个接口模型可用于访问数据 模型可以有不同的实现 可以以各种格式表示数据 例如 XMl txt 格式等 Model不关心格式 可以说这样的一个实现是myxml模型 现在我想强迫myxml模型以及其他所有实
  • 如何根据从 jtextfield 和组合框接收的值将数据行添加到 Jtable

    我有一个JFrame表格有JTextFields JCombobox等等 我能够将这些值接收到变量 现在我想将接收到的数据添加到JTable当用户单击 添加 或类似的操作时在新行中 我创造了JTable使用 net beans 的问题是将这
  • 从侦听器中修改 JFrame [重复]

    这个问题在这里已经有答案了 可能的重复 如何在框架可见后调用 setUndecorated https stackoverflow com questions 875132 how to call setundecorated after
  • 有没有办法删除 JShell 中的导入?

    我正在发现 JShell 并且发现默认添加的导入 jshell gt imports import java io import java math import java net import java nio file import j
  • 从 Java 应用程序读取的文件是否会调用系统调用?

    我的理解是 请求文件系统路径 例如 aFile 的用户应用程序将调用文件系统并获取所请求文件的虚拟地址 然后应用程序将尝试以该地址作为参数 即作为 CPU 指令 进行读 写操作 执行读取命令时 内存管理单元会将该地址转换为物理地址 并查看页
  • 可空日期列合并问题

    我在 Geronimo 应用程序服务器上使用 JPA 和下面的 openjpa 实现 我也在使用MySQL数据库 我在更新具有可为空 Date 属性的对象时遇到问题 当我尝试合并 Date 属性设置为 null 的实体时 不会生成 sql
  • java - 简单计算在多线程中比在单线程中花费更长的时间

    我试图了解如何利用多线程 我写了一个简单的程序来增加i 比方说 使用两种方式 400 000 次 单线程方式 0 到 400 000 和多线程方式 在我的例子中 4 次 0 到 100 000 线程数等于Runtime getRuntime
  • Swing GUI 出现 IntelliJ 错误“contentPane 无法设置为 null。”从终端编译时

    当我从 IntelliJ 编译我的项目时 没有任何问题 我的程序运行顺利 但是当我尝试使用 javac 从终端编译它时 警告 注意 Victor presentation TableControllerMenu java 使用未经检查或不安
  • ImageIO.read(...) - 非常慢,有更好的方法吗?

    我正在加载大量将在我的应用程序中使用的图标 我计划在服务器启动时从 jar 中加载所有这些 然而 由于数百张图像加起来刚刚超过 9MB 执行此任务仍然需要 30 秒多的时间 我现在正在一个单独的线程中执行此操作 但这让我想知道我是否在代码中
  • 为什么我们不能在函数式接口中重载抽象方法? (爪哇)

    所以我熟悉java中的函数式接口 以及它们与lambda表达式的使用 一个函数式接口只能包含一个抽象方法 当从 lambda 表达式使用这一孤独方法时 您不需要指定其名称 因为接口中只有一个抽象方法 编译器知道这就是您正在引用的方法 Exa

随机推荐

  • 这个 CASE 表达式如何到达 ELSE 子句?

    我需要将一些测试数据加载到我的帐户表上的通道字段中 Channel 可以是 10 个不同值之一 所以我想我应该使用 a 随机分配 Channel 值之一CASE表达随着ABS CHECKSUM NewId 10像这样 SELECT id n
  • 如何以编程方式将函数添加到嵌套命名空间?

    假设我有一个函数 当我只传递一个字符串时 它会动态地为我创建命名空间 我很确定 YUI JS 库的作用 MyObj namespace fn method name 会导致 MyObj fn method name 正在创建 所有三个级别都
  • 如何使用此关键字获取 List> ?

    我有片段 我在列表中获取字符串并将其发送为Bundle到活动 例如 我获取一个字符串并通过以下方式将其发送到活动 public class ViewPagerAdapter extends FragmentStatePagerAdapter
  • 使用 ChartJS 更改点击时的点颜色

    目前 当您单击单个点 折线图上 时 我可以更改它的颜色 但它会立即变回以前的颜色 我该如何防止这种情况发生 这是我的功能 var options onClick function e var element this getElementA
  • MongoDB 查找所有数组元素等于某个值的文档

    收藏 db test find id ObjectId arr Today is null id ObjectId arr null null null 我试图找到所有文件arr等于某个值 在此示例中 我想要包含以下内容的文档arr nul
  • 如何在 Mac 终端中使用 g++?

    我已经安装了 Xcode 并且可以在 Xcode 中编译 cpp 文件 但是 我想在终端中使用 g 但找不到命令 g now 我的操作系统是 Mountain Lion Xcode 版本是 4 4 您需要从以下位置下载并安装 OSX Mou
  • 在 Android 中显示 SVG 文件

    我想创建一个应用程序来显示某些平面图上的位置 导航是通过 WiFi 以某种方式实现的 我已经做到了 所以现在我遇到了显示平面图的问题 它可能是某种矢量格式 在网上冲浪一段时间后我决定它必须是 svg 文件 我找到了一些解决方案 但它对我不起
  • UITextView 在 tvOS 中不滚动

    我有一个UITextView在我的电视应用程序中 当我尝试使其可聚焦时 用户界面无法使其可聚焦 并且我无法滚动它 我读到了一些有关它的问题 有些人说这是一个已知问题 我们应该使用故事板 实际上我正在使用故事板 但仍然无法让它发挥作用 我也曾
  • 如何在共享服务器上部署 Laravel-Vue 项目 (GoDaddy)

    这是我第一次开发Laravel Vue app 当我使用php artisan serve 一切正常 但是当我加载它时http localhost myProject public 资产未加载 我的图像在imgpublic 文件夹内的目录
  • 我如何将运行时依赖传递给 Hilt 模块?

    我希望创建一个Retrofit通过带有运行时的 Hilt 模块的实例baseUrl 我怎样才能提供baseUrl到希尔特模块 图表示例 use case gt repository gt api gt retrofit gt 你能帮助我吗
  • 仅返回 xpath 中元素的文本(python / lxml)

    我有一个像这样的 XML 结构 mytree
  • 使用 R 循环日期

    我需要在 R 中编写一些代码 通过循环日期来构建字符串 但我似乎无法在我的书中或通过谷歌搜索找到这样的示例 基本上 for theDate 1Jan14 to 31Dec14 http website com api theDate 我考虑
  • Eclipse IDE - Android 图形布局和 XML 布局并排

    是否可以将 Android 图形布局放在 Android XML 布局旁边 以便我可以同时修改两者 更改 XML 并立即看到效果会比一直单击选项卡进行更改要好得多 是的 虽然我刚刚尝试过 但在图形布局编辑器中更改某些内容后 它有一点滞后 打
  • 模板方法模式中每个实现需要不同的参数?

    我有一个基抽象类 需要一个身份验证算法 我有两种实现方式 一种将散列密码并将其与存储的散列进行比较 另一种将使用 Windows Active Directory 但在实际执行哈希检查或 Windows 身份验证之前 我必须绝对实现额外的工
  • 阻止一个表单提交,然后提交另一个表单 - 这种方法可靠吗?

    在一个表单的提交事件处理程序中提交另一个表单并返回是否安全false阻止提交第一份表格 form1 submit function form2 submit return false 我正在使用这种方法 并且它有效 至少在 IE6 中 但是
  • 如何在不使用 WinjS 库的情况下在通用 Windows 应用程序中添加后退按钮事件?

    这是我的 main js function use strict No need of WinJS var activation Windows ApplicationModel Activation var roaming Windows
  • 如何查看android数据库(SQLite)中保存的数据?

    我可以从 eclipse 查看数据库 来自文件管理器 但我想查看整个详细信息 我的意思是我插入的数据 但我无法查看 我的 Android 完整安装已经完成F Drive 您可以使用模拟器的 DDMS 访问此文件夹 除非您有 root 设备
  • Json 字符串反序列化为对象数组列表

    请帮忙 反序列化时出现此错误 无法将 System String 类型的对象转换为类型 系统 集合 通用 列表 来自客户端的 JSON 字符串 id 18 0 2 0 and 您可以输入自由文本来代替 id 23 1 3 1 and 刷新按
  • 将文件解密为流并将流读入 p​​andas(hdf 或 stata)

    概述我正在尝试做的事情 我有需要读入 pandas 的文件的加密版本 由于多种原因 解密到流而不是文件要好得多 所以这是我下面的兴趣 尽管我也尝试解密到文件只是作为中间步骤 但这也不起作用 我可以让它适用于 csv 但不适用于 hdf 或
  • 断言 VS 运行时异常

    我正在编写 API 因此我的 API 将从外部模块中使用 这是我无法弄清楚使用断言或什么的方法之一java lang IllegalArgumentException Adds translation of information to u