Как вы определяете исключение? - PullRequest
1 голос
/ 28 апреля 2011

Я привык к Zend Framework, когда вы пишете свой собственный компонент, вы создаете его собственный файл исключений, но для каждого файла у вас есть такая структура:

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 сcustom messagE.

Кроме того, как насчет одного файла Exception для каждого, Exception.

Как в следующей структуре:

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

Существуют ли передовые практики?Есть плюсы / минусы?

Ответы [ 2 ]

0 голосов
/ 28 апреля 2011

Для меня лучшая практика - группировать исключения, связанные с их проблемой.

Например, если у вас есть несколько исключений Auth, например InvalidDetails , UserNotFound , поместите их здесь

  • Библиотека / Auth / Исключения / InvalidDetails.php
  • Библиотека / Auth / Исключения / UserNotFound.php

Каждое исключение должно быть расширением Zend_Exception (если вы сами его не расширили)

так вы можете сделать:

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

преимущество использования этого метода в том, что вам НЕ нужно иметь сообщение, имя исключения может покрыть его достаточно.

Здесь я предполагаю, что вы настраиваете пространство имен для Library, которое называется Library, и все внутри.

Я склонен группировать все, поэтому типичная библиотека Auth может быть:

  • Auth / Формы / login.php
  • Auth / Исключение / InvalidUser.php
  • Auth / Орм / Abstract.php
  • Auth / Орм / Doctrine.php

НТН

0 голосов
/ 28 апреля 2011

Я никогда не работал с Zend Framework, но если это вообще поможет, я бы по крайней мере создал общий класс Exception, а все остальные расширяют его, а не просто делают один для каждого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...