当前位置:  开发笔记 > 编程语言 > 正文

PHP异常真的比错误更有用吗?(进阶)

如何解决《PHP异常真的比错误更有用吗?(进阶)》经验,为你挑选了1个好方法。

我相信在正确编码的系统中 - 错误(作为错误或异常)是不可能的(除了DB/memcached服务器关闭导致查询失败).我们的代码不应该依赖任何假设才能正常工作,并且应该尽可能地作为防弹.

但是,为了确保我们的系统以最友好的方式处理问题,我们必须构建并实施某种"捕获系统",以确保如果出现任何问题,我们的服务器人员和最终用户都会照顾好.

为此,PHP提供了两种解决方案 - 错误和异常.错误由5个值组成,而异常由包含在对象中的5个值组成.两者都允许在构建应用程序时非常有用的回溯.

5个值是$ error_code,$ error_message,$ file,$ line,$ context

通常,在我们努力进行适当的OOP编程时,默认选择始终是追求对象 - 但在这种情况下,我不确定它们实际上是多么有益.通过使用异常,浪费了额外的内存以满足在对象中包装值的需要(这通常还需要包含异常类的额外文件).此外,您必须在TRY/CATCH {}块中包装您认为可能失败的任何代码.这使得错误处理方法对人为错误开放,因为开发人员可能无法解决故障点.为了安全防范这种情况,您可以使用set_exception_handler,它将传递任何未捕获的异常.关于异常处理程序的坏处是执行将在调用exception_handler之后停止 - 因此如果不在try/catch块中捕获,则不存在可恢复/忽略的异常.

另一方面,错误总是全局的,可以由set_error_handler设置的任何函数/类处理.这消除了对额外异常类,对象内存或try/catch代码行的需要.与异常一样,错误也伴随着构建错误代码(与异常不同),您可以使用它来继续脚本执行,以解决轻微或不重要的脚本问题.此外,大多数PHP函数都会触发错误,因此您不会违反语言流程.

因此,无论如何您必须支持错误处理(对PHP语言做),浪费额外代码和内存以及实现异常的目的是什么?我们只是盲目地这样做是因为它是对象形式的错误,还是应用程序设计中存在真正的好处,而正常错误无法承受我们?



1> Daniel Pryde..:

我在这行之后停止阅读:

我相信在正确编码的系统中 - 错误(作为错误或异常)是不可能的(除了DB/memcached服务器关闭导致查询失败).

这就是异常的全部目的 - 作为管理代码中特殊情况的构造.

如果您将异常作为非常普通程序流程的一部分,那么您做错了.

如果您不知道为什么异常对特殊情况有用,那么您可能需要花一些时间使用真正的OO语言.(提示:PHP不是真正的OO语言.)

推荐阅读
mobiledu2402851323
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有