![]() |
1
1
例外是伟大的!允许您将错误处理代码与错误代码分开。
你说的没错
当我说它有助于使您的错误处理代码远离错误时,请考虑一下
所以您不需要检查每个函数是否有错误的返回,并对其进行操作。 |
![]() |
2
2
我的思路是: 如果一段代码因为一个预条件失败而不能完成它的工作,那么抛出一个异常。
所以,如果你
这使您能够更快地发现问题,因为“没有结果”和“可能无效的状态”之间有明显的区别。如果你习惯在这种情况下抛出一个异常,它会让你安心,因为它会很难失败,而不是以未定义/意外的方式继续。
我会回来
P.S.:这也是为什么根据我的定义,从输入验证中抛出异常是错误的。该代码的全部目的是验证输入,因此预期输入无效,因此也不例外。 |
![]() |
3
0
我建议只使用一种样式,所以如果到目前为止您已经通过返回false编写了应用程序,那么您应该考虑保持这种状态。
但是,如果您想为异常重写代码,请注意在PHP中异常需要资源(在CPU时间和内存中)。我想举例说明:假设有一个函数
最后我切换到另一个模型,在那里我传递了一个参数来控制是否抛出异常。将默认值设置为true可以让我在不考虑此类错误情况的情况下懒散地编程,并且通过传递一个额外的参数,我可以将异常情况转换为速度。即使在其他函数中引发异常,也可以这样做,因为您可以将该参数传递给:
我想你会发现这很有用。 |
![]() |
4
0
乔尔·斯波斯基说, Exceptions shouldn't be used . 关于异常处理,我的一般经验法则是,首先尝试为最终用户维护应用程序流,您可以首先通过从不在PHP中抛出异常来完成这一点,但有时它们是有用的。 我倾向于看一个决定,是抛出异常,还是返回布尔值错误,还是基于可能导致触发问题的状态的条件,返回其他一些处理方法。 当执行特定代码块时,这是一个正常的、合理的值还是状态?如果是这样,那么您可能只想返回一个布尔值false或其他一些指示代码块到达故障点的值。 如果您担心可能存在非正常值或状态,或者如果值或状态是由于某人忘记正确初始化代码中的变量而导致的,那么异常可能是适当的,因为这将作为开发人员立即向您提供反馈。这里有两个例子,一个必需的属性必须在对象构造函数中设置,但该值没有正确指定,或者如果您有一个场景,在该场景中,不应对对象调用方法,则可能希望在调用该方法时引发异常。 简而言之,我倾向于使用最适合的工具。如果我处理的是正常应用程序执行的一部分,那么我通常返回一个值来指示失败。如果发生了一些无效的情况,那么我抛出一个异常,以便处理这个问题。 我想您可以说,我只使用异常来捕获那些应该真正停止最终用户的应用程序执行的东西,但是我在编写代码时考虑到,通过适当的测试,这些代码行中的任何一行都不应该在野外执行。 |