当前位置: 首页 > 面试题库 >

在PHP中try-catch的性能

司寇凯
2023-03-14
问题内容

在PHP 5中使用try-catch语句时,要考虑什么样的性能影响?

以前,我已经在网上阅读了一些有关该主题的古老的,看似矛盾的信息。我目前必须使用的许多框架都是在php 4上创建的,并且缺少php
5的许多优点。因此,我在使用try-catchs与php方面经验不足。


问题答案:

要考虑的一件事是,没有引发异常的try块的开销与实际引发和捕获异常的开销是一个不同的问题。

如果仅在失败情况下引发异常,则几乎可以肯定您不在乎性能,因为在每次执行程序时都不会失败很多次。如果您的应用程序无法正常运行(又称:撞墙撞头),那么应用程序可能会遇到比慢的问题更严重的问题。因此,除非您因某种原因被迫将其用于常规控制流,否则不必担心引发异常的代价。

有人发布了一个答案,谈论引发异常的性能分析代码。我从来没有亲自测试过它,但是我自信地预测,这将带来比不插入任何尝试块进出try块更大的性能损失。

要考虑的另一件事是,在嵌套调用的深度很深的地方,在顶部单独进行一次try … catch甚至比检查返回值并传播每次调用的错误要快得多。

相反,在这种情况下,您发现将每个调用都包装在其自己的try … catch块中,您的代码将变慢。和丑陋的。



 类似资料:
  • 在我的脚本中,有时会出现服务器、连接、配置或API问题,因此我实现了一个try-catch块来正确捕获异常并跳过它们。 ...但我的问题没有用这个解决方案解决,因为(引发问题的)元素不是问题本身。所以基本上,我的问题是,是否有任何方法可以捕获错误并继续您离开的地方:不跳过错误并转到下一个元素,而是在foreach循环中重复当前的迭代。 显然,继续和打破是行不通的! ...并且当catch部分捕获到

  • 问题内容: 可以在Swift中捕获异常吗?给出以下代码: 是否可以防止异常导致整个程序崩溃?也就是说,Objective-C中的Swift等效于什么: 问题答案: 它没有异常处理,并且在开发人员论坛中的讨论讨论了为什么会这样: 但请记住,可可和可可触控传统上并不打算让您捕获异常。他们打算让您不要将它们放在首位。普通错误应使用可选类型和inout NSError参数处理;您应该通过编写更好的代码来解

  • 是否有像java try catch finally这样的linux bash命令?还是linux shell总是在运行?

  • 问题内容: 我正在考虑在以后的所有Web应用程序中使用PDO。当前(使用到目前为止我从中学到的知识),我站点中用于处理数据库连接的内容是一个Singleton类,如下所示: 另一个文件(functions.php)具有特定于内容的功能,看起来像这样: 这意味着我必须重复所有功能。 我的问题是: 我应该如何提高效率?(例如,不必在所有功能中都重复执行,但仍然能够在每个功能上返回不同的“失败消息”)

  • 问题内容: 我一直在PHP代码中使用try..catch块,但不确定是否已正确使用它们。 例如,我的一些代码如下所示: 因此,我将多个数据库操作分组在同一try / catch块中,因为如果任何事务中发生任何异常,我将能够处理它。 我这样做是因为我认为它比: 虽然,我不确定我在做什么是好的习惯还是只是捕获异常的一种懒惰方式。 我的假设是,仅当异常需要特殊处理时,它才应具有自己的try / catc

  • 问题内容: 我最初从大学开始编程,然后学习了vb.net。现在,我决定转向Java并进行一些查询。在vb中,try catch语句的布局如下 但是在Java网站(https://docs.oracle.com/javase/tutorial/essential/exceptions/putItTogether.html)中,我发现在Java中,您使用了两个陷阱,如下所示: 我希望有人能够解释为什么