我已经习惯了Zend Framework,当你编写自己的组件时,你会创建它自己的Exception文件,但是基于每个文件,你就有了这样的结构:
Zend/View/Exception.php
Zend/View/Helper/Exception.php
Zend/View/Renderer/Exception.php
等
我很好,我也使用Doctrine2和Exception以不同的方式“存储”
类似(以Zend方式)
并在Zend/View/Exception.php
class Exception {
public static function invalidArguement() {
return new self('Invalid arguement was given, etc..');
}
据我所知,第二种方法不够灵活,但更准确,因为它会根据错误抛出异常。
第一种方法只是一种能够使用自定义消息抛出Zend_View_Exception的方法。
另外,每个Exception文件的例外情况如何。
与以下结构类似:
Exception/InvalidArguement.php
Exception/AuthentificationFailed.php
Exception/QuantityLimit.php
有最佳做法吗?任何利弊?
答案 0 :(得分:0)
我从来没有使用Zend框架,但如果这对我有帮助,我至少会创建一个共同的Exception类,而所有其他的扩展它,而不是只为每个类创建一个。
答案 1 :(得分:0)
对我而言,最佳做法是对与其问题相关的例外进行分组。
例如,如果您有许多Auth例外,例如 InvalidDetails , UserNotFound 将它们放在这里
每个异常应该是Zend_Exception的扩展(除非你自己扩展它)
这样你可以做到:
throw new Library_Auth_Exception_InvalidDetails("Invalid details when trying to login");
使用此方法的好处是你不需要有消息,Exception名称可以覆盖它。
我的假设是你为Library设置一个名为Library的命名空间,一切都在那里。
我倾向于将所有内容分组,因此典型的Auth库可能是:
HTH