Обработка ошибок в PHP

Является ли хорошей идеей генерировать исключения для цепных методов?

Например:

class Mailer(){

private $attachment;

public function addAttachment($attachment){
if($this->validateAttachment($attachment)){
$this->attachment = $attachment;
}

throw new \InvalidArgumentException('Invalid attachment');
}

public function send(){
[...]
}

private function validateAttachment($attachment){
if($attachment === 'test'){
return true;
}

return false;
}
}

$mailer = new Mailer();
$mailer->addAttachment('invalid')->send();

Конечно, это не удастся и приведет к фатальной ошибке, если мы не используем try / catch.

В противном случае, если мы не выбросили ошибку, когда addAttachment не удается, использование не заметит, если что-то пошло не так.
И если send может работать без вложений, мы также не можем вернуть ошибку в этом методе.

Итак, есть ли хорошая практика ведения журнала ошибок / обработки при использовании цепных методов?

1

Решение

Вы должны выдать исключение везде, где хотите прервать поток программы. Неважно, прикован он или нет. В вашем случае, если добавление вложения не удалось, вы хотите остановить его, прежде чем оно достигнет send(), Это отлично подходит для исключения.

Очевидно, вам нужно убедиться, что вы завернули все выполнение в try/catch или вы получите фатальную ошибку (где останавливается весь PHP).

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector