首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用异常的流量成本

使用异常的流量成本
EN

Stack Overflow用户
提问于 2011-09-08 12:31:30
回答 5查看 113关注 0票数 1

设想一个简单的银行应用程序,其中正在实现资金转移的用例。在编写转移基金操作时,程序员/设计人员有以下两个选项

  1. 编写一个操作来检查是否有足够的资金,并返回一个布尔值,在此基础上执行后续的资金转移选项。这需要创建两个函数,即。checkSufficientFunds()和transferFund()
  2. 写一个单独的操作,它本身检查资金是否足够。如果没有足够的资金,并且调用方法必须处理这个异常,这将引发一个检查异常。 据我所知,这是一个过于简化的情况。我的问题是,理论上,这两种方法对性能(内存和CPU)有什么影响?他们怎么比较?
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-09-08 12:37:45

当前JVM中的性能差异应该可以忽略不计。然而,坚持在特殊情况下应使用例外情况的规则。如果没有足够的资金,这是一个正常的流程,因此我将使用一个方法public boolean transferFund(),如果成功返回true,则返回false,否则返回false。这个建议违反了命令/查询分离,但我认为它是好的。

票数 1
EN

Stack Overflow用户

发布于 2011-09-08 12:38:03

业绩的影响不太可能变得足够大,足以让人担心。但是,我仍然建议在特殊情况下使用例外情况。在这种情况下,您不需要两种方法。你可以

代码语言:javascript
复制
boolean transferred = transferFundsIfAvailable( ... );

使用两种方法的一个不受欢迎的原因是,即使单个方法是线程安全的,它也可能导致争用条件。说你有

代码语言:javascript
复制
if(checkSufficientFunds()) {
    // another thread transfers funds
    transferFund(); // but there is not enough any more
}

另外,你也可以忘记先打电话给支票。没有它你会过得更好。

票数 0
EN

Stack Overflow用户

发布于 2011-09-08 12:41:47

在运行时,尝试捕获块不会显著影响性能。只有当异常发生时,在这些情况下,您必须无论如何处理异常。但是,只有当需要异常时(当应用程序无法正常运行时),您才必须使用异常。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7348040

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档