gpt4 book ai didi

php - 如何命名异常(PHP)?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:56:53 25 4
gpt4 key购买 nike

我正在从事一个相当大的项目,并且在 stackoverflow 和其他网站上阅读了很多关于异常的信息。结果是,有 100% 的正确或错误。有些会针对无效的用户输入抛出异常,有些则不会。有些仅针对运行时错误抛出异常,有些则不会...

我个人喜欢即使对于无效的用户输入也能抛出异常的方式。

现在我的问题是我有一个用户可以评论另一个用户的陈述(例如他/她最喜欢的音乐等等)。每个用户只允许发表一次评论。现在,为评论创建数据库条目的函数检查用户是否已经对该语句发表评论。如果是,则抛出异常。通常我会说我将此异常命名为:ExceptionStatementAlreadyCommented但是我在这个项目中还有很多其他功能,如果我总是创建这样的特定异常,我最终会得到大约 100 - 200 个异常。

这会影响性能吗?我通过 __autoload 函数自动加载所需的类,因此仅在需要时才加载实际的异常。

像这样命名异常是不是一个好方法?过去,我很难对不同的错误使用一个异常,因为当我捕获异常时,我有时会捕获到我不想捕获的异常。

非常感谢您的帮助!

最好的问候,

弗莱迪

最佳答案

我的感觉是您已经结束了对异常的使用。顾名思义,只有在特殊情况下才会引发预期。

不应使用异常来控制应用程序的流程。用户输入错误数据或未​​输入正确的用户名和密码将被视为应用程序正常流程的一部分,而不是异常情况。

您应该只在可能导致整个或部分应用程序无法使用的特殊情况下抛出异常,例如,无法连接到数据库。

这样,您就不会在系统中遇到太多需要捕获并可能重新抛出的异常。

有不同的异常(exception)是个好主意,例如,我使用 RedBean ORM与我的数据库对话,它使用这些异常:

  • RedBean_Exception_Security(发生安全异常时)。
  • RedBean_Exception_SQL(当出现错误的 sql 语法或其他问题时)。

对异常过于具体会导致很多困惑。例如,如果我有 missing sql columnbad syntaxmissing value 等异常,它会变得非常难以管理。但是,如果我有一个 SQL_Exception,并将该异常用于上述所有操作,那么管理起来就会更加整洁和简单。

至于性能,必须加载大量类(我假设它们在外部文件中)可能会给应用程序带来负担。使用 APC 可以部分缓解这种情况。 , 在内存中缓存已解释的 PHP 代码。但如果不进行任何分析,这很难说清楚。

关于php - 如何命名异常(PHP)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11467045/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com