Я изо всех сил пытаюсь разобраться, когда я использую пару PHP SPL Exceptions , в частности, в приведенном ниже сценарии:
class MyClass {
protected $data1;
protected $data2;
public function setData1($data1) {
$this->data1 = $data1;
}
public function setData2($data2) {
$this->data2 = $data2;
}
public function invokeProcess() {
$this->validateData();
}
protected function validateData() {
if(!$this->data1) {
// Which Exception do I throw? See explanation below
}
if($this->data1 && $this->data2) {
// Which Exception do I throw? See explanation below
}
}
}
У меня есть класс, которыйпостроен.Затем пользователь устанавливает некоторые данные для объекта и вызывает процесс.Первое, что делает этот процесс, проверяет данные на объекте, чтобы убедиться, что требуемые данные присутствуют, комбинации данных правильны и т. Д., А если нет, то должно быть выдано исключение.
Так какие же исключения я выбрасываю?
Моя проверка действительно проверяет два сценария,
- Пропущенные данные, то есть данные, которые не были установлены.
- Неправильная комбинация данных.
Для # 1 я разрывался между BadMethodCallException
, RuntimeException
и LogicException
.Что касается # 2, я думаю, что это просто LogicException
?
Итак, какие из них я использую?
Примечание: Прежде чем кто-либо спросит, я не могуиметь требуемые данные в качестве параметров в конструкторе, поскольку некоторые данные требуются только при задании других данных и т. д.