Fre*_*ddy 4 php performance exception
我正在开发一个非常大的项目,并在stackoverflow和其他网站上阅读了很多关于异常的内容.结果是,有100%是对还是错.有些会抛出无效用户输入的异常,有些则不会.有些只针对运行时错误抛出异常,有些则不...
我个人喜欢甚至为无效的用户输入抛出异常的方法.
现在我的问题是我有一个用户可以评论另一个用户的声明(例如他/她的偏好音乐等).每个用户只允许一次对其进行评论.现在,为注释创建数据库条目的函数检查用户是否已对该语句进行了注释.如果是,请抛出异常.通常我会说我命名这个例外:ExceptionStatementAlreadyCommented但我在这个项目中有很多其他函数,如果我总是创建这样的特定异常,我最终会得到大约100 - 200个异常.
这会影响性能吗?我通过__autoload函数自动加载所需的类,因此实际的异常仅在需要时加载.
命名这样的异常是一种好方法吗?在过去,我遇到了使用一个异常来处理不同错误的问题,因为当我捕获异常时,我有时会捕获到我不想捕获的异常.
非常感谢你的帮助!
最好的祝福,
弗雷迪
我的感觉是你过度使用异常.如名称所述,只应在特殊情况下进行预测.
不应使用例外来控制应用程序的流程.输入错误数据或未输入正确用户名和密码的用户将被视为应用程序正常流程的一部分,而非特殊情况.
您应该只在可能导致整个或部分应用程序无法使用的特殊情况下抛出异常,例如,无法连接到数据库.
这样,您不会在系统中遇到如此多的异常,这些异常需要捕获并且可能需要重新抛出.
最好有不同的例外,例如,我使用RedBean ORM与我的数据库交谈,它使用以下异常:
过于具体地说明异常会导致很多混乱.举例来说,如果我有一个例外missing sql column,bad syntax,missing value,等,它可以变得相当unmanagable.但是,如果我有一个SQL_Exception,并使用上述所有的例外,那么管理更简洁,更简单.
至于性能,必须加载很多类(我假设它们在外部文件中),可能会对应用程序造成负担.通过使用APC将缓存解释的PHP代码缓存在内存中可以部分缓解这种情况.但是如果没有任何剖析,这很难说.
最好有一个异常树,从最一般的到最具体的,例如,你的StatementAlreadyCommentedException(这就是它应该被命名的方式,异常部分在末尾)应该继承自InvalidUserInputException,或者可能是AlreadyExistsException异常,并且那些应该从更一般的东西继承,例如Exception.
这样,您就可以捕获比您正在搜索的异常更具体的所有异常(如果您需要的话)。(你可以 catch Exception,它会捕获所有可能的异常,你可以 catch AlreadyExistsException,它会捕获任何扩展它的异常。
| 归档时间: |
|
| 查看次数: |
1509 次 |
| 最近记录: |