Должен ли я выбросить исключение в этом случае? - PullRequest
3 голосов
/ 12 февраля 2011

Этот подход в порядке? Правильно ли я обрабатываю исключения? Смотрите мой класс:

class Email extends String
{
protected function validate($email)
{
    try{
        parent::validate($email);
    } catch(InvalidArgumentException $e) {
        throw $e;
    }

    if(!filter_var($value,FILTER_VALIDATE_EMAIL))
    {
        throw new InvalidArgumentException('etc.');
    }
}
}

1 Ответ

11 голосов
/ 12 февраля 2011

Если вы не собираетесь ничего делать с исключением внутри этого блока catch, нет необходимости заключать этот родительский метод в свой собственный блок try-catch. Метод автоматически передаст исключение из реализации родителя, если встретит его за пределами блока try-catch, точно так же, как если вы сгенерировали исключение из того же контекста (как вы делаете после условия if):

protected function validate($email)
{
    parent::validate($email);

    if (!filter_var($value, FILTER_VALIDATE_EMAIL))
    {
        throw new InvalidArgumentException('etc.');
    }
}
...