Java if 与 try/catch 开销

2023-12-05

Java 中使用 a 是否有任何开销试着抓块,而不是if block(假设所附代码不要求如此)?

例如,采用以下两个字符串“安全修剪”方法的简单实现:

public String tryTrim(String raw) {
    try {
        return raw.trim();
    } catch (Exception e) {
    }
    return null;
}

public String ifTrim(String raw) {
    if (raw == null) {
        return null;
    }
    return raw.trim();
}

If the raw输入很少null, 有什么性能差异吗两种方法之间?

此外,这是一个好的编程模式吗使用tryTrim()简化代码布局的方法,尤其是当许多如果块通过将代码包含在一个 try/catch 块中可以避免检查罕见的错误情况吗?

例如,一种常见的情况是有一个方法N parameters,它使用M <= N其中的一些接近其开始处,如果任何此类参数“无效”(例如,空或空字符串),则快速且确定性地失败,而不影响代码的其余部分。

在这种情况下,不必写k * M 如果块 (where k是每个参数的平均检查次数,例如k = 2对于 null 或空字符串),a试着抓block 将显着缩短代码,并且可以使用 1-2 行注释来明确注释“非常规”逻辑。

这种模式还会加速该方法,特别是如果错误情况很少发生,并且不会影响程序安全(假设错误情况是“正常”的,例如在字符串处理方法中,其中 null 或空值)是可以接受的,尽管很少出现)。


我知道您在询问性能开销,但您确实不应该使用try/catch and if可以互换。

try/catch是针对超出您控制范围且不在正常程序流程中的错误。例如,尝试写入文件而文件系统已满?这种情况通常应该这样处理try/catch.

if语句应该是正常的流程和普通的错误检查。例如,用户无法填充必填输入字段?使用if为此,不try/catch.

在我看来,您的示例代码强烈表明正确的方法是if声明而不是try/catch.

为了回答你的问题,我推测通常有更多的开销try/catchif。要确定答案,请获取 Java 分析器并找出您关心的特定代码。答案可能会根据具体情况而有所不同。

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

Java if 与 try/catch 开销 的相关文章

  • 按键时关闭 ModalWindow

    我希望能够在用户按下某个键 在我的例子中是 ESC 时关闭 ModalWindow 我有一个用于按键的 Javascript 侦听器 它调用取消按钮 ID 的单击事件 jQuery modalWindowInfo closeButtonId
  • 如何让 BlazeDS 忽略属性?

    我有一个 java 类 它有一个带有 getter 和 setter 的字段 以及第二对 getter 和 setter 它们以另一种方式访问 该字段 public class NullAbleId private static final
  • 日期语句之间的 JPQL SELECT [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我想将此 SQL 语句转换为等效的 JPQL SELECT FROM events WHERE events date BETWE
  • 序列的排列?

    我有具体数量的数字 现在我想以某种方式显示这个序列的所有可能的排列 例如 如果数字数量为3 我想显示 0 0 0 0 0 1 0 0 2 0 1 0 0 1 1 0 1 2 0 2 0 0 2 1 0 2 2 1 0 0 1 0 1 1 0
  • Spring应用中Eureka健康检查的问题

    我正在开发一个基于 Spring 的应用程序 其中包含多个微服务 我的一个微服务充当尤里卡服务器 到目前为止一切正常 在我所有其他微服务中 用 EnableEurekaClient 我想启用这样的健康检查 应用程序 yml eureka c
  • Mockito:如何通过模拟测试我的服务?

    我是模拟测试新手 我想测试我的服务方法CorrectionService correctPerson Long personId 实现尚未编写 但这就是它将执行的操作 CorrectionService将调用一个方法AddressDAO这将
  • 如何通过 javaconfig 使用 SchedulerFactoryBean.schedulerContextAsMap

    我使用 Spring 4 0 并将项目从 xml 移至 java config 除了访问 Service scheduleService 带注释的类来自QuartzJobBean executeInternal 我必须让它工作的 xml 位
  • 在 junit 测试中获取 javax.lang.model.element.Element 类

    我想测试我的实用程序类 ElementUtils 但我不知道如何将类作为元素获取 在 AnnotationProcessors 中 我使用以下代码获取元素 Set
  • Spring Boot Data JPA 从存储过程接收多个输出参数

    我尝试通过 Spring Boot Data JPA v2 2 6 调用具有多个输出参数的存储过程 但收到错误 DEBUG http nio 8080 exec 1 org hibernate engine jdbc spi SqlStat
  • 为什么 Java 8 不允许非公共默认方法?

    让我们举个例子 public interface Testerface default public String example return Hello public class Tester implements Testerface
  • 使用 AsyncTask 传递值

    我一直在努力解决这个问题 但我已经到了不知道该怎么办的地步 我想做的是使用一个类下载文件并将其解析为字符串 然后将该字符串发送到另一个类来解析 JSON 内容 所有部件都可以单独工作 并且我已经单独测试了所有部件 我只是不知道如何将值发送到
  • java.io.Serialized 在 C/C++ 中的等价物是什么?

    C C 的等价物是什么java io Serialized https docs oracle com javase 7 docs api java io Serializable html 有对序列化库的引用 用 C 序列化数据结构 ht
  • 如何使用 jUnit 将测试用例添加到套件中?

    我有 2 个测试类 都扩展了TestCase 每个类都包含一堆针对我的程序运行的单独测试 如何将这两个类 以及它们拥有的所有测试 作为同一套件的一部分执行 我正在使用 jUnit 4 8 在 jUnit4 中你有这样的东西 RunWith
  • Opencv Java 灰度

    我编写了以下程序 尝试从彩色转换为灰度 Mat newImage Imgcodecs imread q1 jpg Mat image new Mat new Size newImage cols newImage rows CvType C
  • 如何使用mockito模拟构建器

    我有一个建造者 class Builder private String name private String address public Builder setName String name this name name retur
  • 包 javax.el 不存在

    我正在使用 jre6 eclipse 并导入 javax el 错误 包 javax el 不存在 javac 导入 javax el 过来 这不应该是java的一部分吗 谁能告诉我为什么会这样 谢谢 米 EL 统一表达语言 是 Java
  • 使用反射覆盖最终静态字段是否有限制?

    在我的一些单元测试中 我在最终静态字段上的反射中遇到了奇怪的行为 下面是说明我的问题的示例 我有一个基本的 Singleton 类 其中包含一个 Integer public class BasicHolder private static
  • 使用 CXF-RS 组件时,为什么我们使用 而不是普通的

    作为后续这个问题 https stackoverflow com questions 20598199 对于如何正确使用CXF RS组件我还是有点困惑 我很困惑为什么我们需要
  • 如何防止在Spring Boot单元测试中执行import.sql

    我的类路径中有一个 import sql 文件 其中包含一些 INSERT 语句 当使用 profile devel 运行我的应用程序时 它的数据被加载到 postgres 数据库中 到目前为止一切正常 当使用测试配置文件执行测试时 imp
  • Spring Boot 无法更新 azure cosmos db(MongoDb) 上的分片集合

    我的数据库中存在一个集合 documentDev 其分片键为 dNumber 样本文件 id 12831221wadaee23 dNumber 115 processed false 如果我尝试使用以下命令通过任何查询工具更新此文档 db

随机推荐

  • 检测并删除异常值作为管道的一个步骤

    我有一个问题 我正在尝试构建自己的类以放入 python 中的管道中 但它不起作用 我试图解决的问题是多类分类问题 我想做的就是在管道中添加一个步骤来检测和删除异常值 我找到了这个检测并删除管道Python中的异常值这与我所做的非常相似 这
  • 设置“float”作为单精度对象的存储模式

    我希望在 R 中将对象的精度显示为 浮点 同时具有单精度 目前它存储为默认类型 double timevector c 1 5 4 5 7 5 10 5 13 5 16 5 19 5 22 5 typeof timevector displ
  • 如何使用 BjyAuthorize 重定向到登录页面

    我想将一些页面重定向到登录页面而不是403页面 默认情况下 BjyAuthorize 将所有内容重定向到 403 页面 是否可以配置此行为 我找到了这个 重定向策略 我该如何使用这个 最后我得到了它 使用 BjyAuthorize 版本 1
  • 使用App Script获取电子表格的所有查看者

    我编写了用于在应用程序脚本中获取电子表格的所有查看者的代码 我使用 getViewers 方法来获取实际观看它的观众姓名 但该方法正在返回我实际共享电子表格的人员的姓名 有没有其他方法可以让我获得电子表格的所有查看者 有没有网络自动化工具可
  • struts2 让我发疯

    I have been trying to make a java project Its using Struts 2 tags There is a button Update whenever it is to be clicked
  • ASP.NET Core 身份验证 cookie 仅收到一次

    我正在使用 ASP NET Core 开发一个应用程序 并且正在使用自定义 Cookie 身份验证 我的CookieAuthenticationOptions are app UseCookieAuthentication new Cook
  • 即使图像较小,如何使 UITableViewCell ImageView 具有固定大小

    我有一堆图像用于单元格的图像视图 它们都不大于 50x50 例如40x50 50x32 20x37 当我加载表格视图时 文本没有对齐 因为图像的宽度不同 另外 我希望小图像出现在中间而不是左侧 这是我在 cellForRowAtIndexP
  • 将asp.net图像添加到div

    有没有一种方法可以动态地将 Image1 添加到下面代码中的 while 循环 包含在 div 中 我的意思是实际上将 asp 图像添加到 div 中 通过代码 目前 当我看到代码时 它会查找一个 asp 图像 但我没有看到可以将其 添加
  • 带有 Excel 文件的 OPENROWSET

    我想执行简单的语句 SELECT FROM OPENROWSET MICROSOFT JET OLEDB 4 0 Text Database C Temp SELECT FROM test csv 今天早上我突然收到这条消息 Msg 730
  • 从 cron 运行时,顶部命令输出为空

    我试图使用以下命令每 5 分钟重定向特定文件中的 TOP 命令输出 top b n 1 gt var tmp TOP USAGE csv date I M p d m Y rw r r 1 root root 0 Dec 9 17 20 T
  • 使用 AspNet.Security.OpenIdConnect.Server 进行自定义生命周期验证 (ASP.NET vNext)

    我正在使用 Visual Studio 2015 Enterprise Update 1 和 ASP NET vNext rc1 update1 来颁发和使用 JWT 令牌 如下所述here 在我们的实现中 我们想要控制令牌生命周期验证 我
  • shell脚本中的“for i”和“for i in 1 2 3 4”有什么区别?

    我必须在不同的行上打印 shell 脚本中解析的所有参数 我写了一个脚本 for i in 1 2 3 4 5 do echo i done 但这打印 1 2 3 4 5 即使我将参数解析为 10 20 30 40 50 和互联网上的一个代
  • Javascript,数组成员的所有可能的总和(最多 4 个)

    我无法弄清楚如何编写一个函数来计算数组元素的所有可能总和 每次加法最多 4 个元素 Given x 1 32 921 9213 97 23 97 81 965 82 965 823 我需要从 1 32 965 823 to 1 32 921
  • 如何指定 Makefile 目标构建顺序而不放置任何物理依赖项?

    我一直在开发一个链接到 so 动态库 文件的 C 项目 假设我有一个目标PROG需要链接到a so 并且a so也是我构建的 在下面的Makefile中指定 PROG SRCS prog cpp PROG OBJS PROG SRCS cp
  • Flutter如何使用setState()

    我的路线之一显示了存储在的当前数据firestore数据库 我正在调用该函数来检索数据firestore in the initState方法 该页面将显示从以下位置检索到的所有数据firestore 它工作正常 即当用户导航到此页面 qu
  • 如何执行对话框命令,并使其返回到原始屏幕?

    新人 不知道怎么问这个问题 简洁版本 执行shell命令后 会返回原来的界面 有什么技巧呢 长版 我正在使用以下命令编写 shell 脚本dialog 假设它将打开一个基于控制台的 UI 那么当我退出它时 它将如下所示 run a scri
  • 通过 firebase 身份验证检查来反应路由器保护的路由

    我想实现受保护的路由 并使用 firebase 进行身份验证 我的浏览器因这段代码而冻结 const App React FC gt const authentication setAuthState useState authentica
  • 类库中带有 POCO 的 EF 4 作为 MVC 2 模型

    我正在探索 Entity Framework 4 并使用 POCO 作为 MVC2 Web 应用程序的模型 我需要将模型和数据访问代码放在单独的库中 因为这样我就可以与另一个 Web 应用程序共享它 该应用程序充当客户访问数据的门户 我的问
  • 在javascript中创建带有下拉框的提示输入对话框?

    有谁知道如何在javascript中创建带有下拉框的提示输入对话框 Example 我认为这是不可能的 您可能必须使用某种模式框 查看 jQuery UI 的模式框 http jqueryui com demos dialog
  • Java if 与 try/catch 开销

    Java 中使用 a 是否有任何开销试着抓块 而不是if block 假设所附代码不要求如此 例如 采用以下两个字符串 安全修剪 方法的简单实现 public String tryTrim String raw try return raw