2013-04-25 3 views
1

У меня есть очень простой заводский метод, который создает экземпляр модели, основанный на некоторых значениях и условиях конфигурации, переданных ему.Factory Method - какое исключение для броска

Что я не уверен в том, что делать, если завод не может создать экземпляр модели на основе конфигурации, которую он получает.

Первый вопрос: должен ли он возвращать значение false или null? или должен ли он исключить?

Если это должно исключить исключение, это должно быть исключение. Im работает в PHP здесь (список исключений php http://php.net/manual/en/spl.exceptions.php)

+1

бросать 'InvalidArgumentException' бы мое предложение –

ответ

0

Вы единственный человек, который может ответить на эти вопросы. То, что должно произойти, нигде не определено.

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


AFAIK, как я знаю, что следующий общий консенсус по этому поводу в PHP основных функций и классов:

  • false должен быть возвращен с помощью метода, который встречает ошибку и не бросает исключений. (и не имеет логического возвращаемого значения, например is_file()). Ожидается, что эти методы установят errno и errmsg, чтобы дать пользователю возможность получить сообщение об ошибке.

  • Некоторые из новых классов PHP будут генерировать исключение в этом случае. Я бы предпочел Исключения для библиотечного кода.

  • null возвращается, если это метод void без оператора возврата. Это может быть обусловлено

+0

я знаю, в какой-то степени вы правы. Но должно быть некоторое общее согласие относительно того, как это считается лучшим для решения этой ситуации. Благодарим вас за предложение об исключении - im thinkint, который тоже лучше всего на этом этапе. –

+0

Написал несколько строк относительно этого. – hek2mgl

Смежные вопросы