开发者

How do you define Exception?

开发者 https://www.devze.com 2023-03-01 12:13 出处:网络
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:

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

精彩评论

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