开发者

How do you define Exception?

I'm used to Zend Framework, when you write your own component, you make it's own Exception file, but on per file basis, then you have such structure:

Zend/View/Exception.php
Zend/View/Helper/Exception.php
Zend/View/Renderer/Exception.php

etc.

I'm ok with, I also use Doctrine2 and Exception are "stored" in a different way

something like (in a Zend way)

and in Zend/View/Exception.php

class Exception {

public static function invalidArguement() {
   return new self('Invalid arguement was given, etc..');
}

I understand that开发者_C百科 the second approach is less flexible but more accurate because it throws exception according the error.

The first approach is just a way to be able to throw a Zend_View_Exception with a custom messagE.

Also, what about one Exception file per, Exception.

Like the following structure :

Exception/InvalidArguement.php
Exception/AuthentificationFailed.php
Exception/QuantityLimit.php

Is there any best practices? Any pros/cons?


For me the best practice is to group exceptions related to their issue.

For example if you have a number of Auth exceptions, like InvalidDetails, UserNotFound put them here

  • Library/Auth/Exceptions/InvalidDetails.php
  • Library/Auth/Exceptions/UserNotFound.php

Each exception should be an extension of Zend_Exception ( unless you've extended it yourself )

this way you can do:

throw new Library_Auth_Exception_InvalidDetails("Invalid details when trying to login");

the benefit of using this method is you DONT need to have a message, the Exception name can cover it enough.

My assumptions here is you setup a namespace for Library called Library and everything is within there.

I tend to group everything, so a typical Auth library could be:

  • Auth/Forms/Login.php
  • Auth/Exception/InvalidUser.php
  • Auth/Orm/Abstract.php
  • Auth/Orm/Doctrine.php

HTH


I've never worked with Zend framework but if this at all helps, I would at least make a common Exception class and all those other ones extend that rather than just make one for each.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜