工厂方法 - 抛出什么异常

时间:2013-04-25 16:14:00

标签: php design-patterns factory factory-pattern

我有一个非常简单的工厂方法,它根据传递给它的配置的某些值和条件创建一个模型实例。

我不确定的是,如果工厂无法根据收到的配置创建模型实例,该怎么办。

第一个问题是,它应该返回false还是null?还是应该抛出异常?

如果它应该抛出异常应该是什么异常。我在PHP工作(php例外列表http://php.net/manual/en/spl.exceptions.php

1 个答案:

答案 0 :(得分:1)

您是唯一可以回答此问题的人。应该发生的事情没有在任何地方定义。

如果你问我,我宁愿抛出异常,如果你愿意,可以叫它YourFactory_ClassNotFoundException。这将使调用代码看起来更简单,因为它不需要测试返回值。


AFAIK我知道在PHP核心功能和类中有以下共识:

  • false应该由遇到错误的方法返回,并且不会抛出异常。 (并且没有像is_file()那样的布尔返回值)。这些方法应设置errnoerrmsg,以便用户有机会获取错误消息。

  • 在这种情况下,一些较新的PHP类会抛出异常。我更喜欢库代码的例外。

  • 如果是没有return语句的void方法,则返回
  • null。这可以是有条件的