dzheka3d
@dzheka3d

Try catch, есть ли возможность собирать ошибки?

Всем привет! На сколько я понимаю, то при появлении исключения последующий код в блоке try не выполняется... Но как быть в такой ситуации? Если пользователь не ввел ничего в форму, как ему показать все три ошибки, а не только первую?

try{

   if(empty($_POST['login'])) throw new Exception("Вы не ввели логин");
   if(empty($_POST['email'])) throw new Exception("Вы не ввели email");
   if(empty($_POST['pass'])) throw new Exception("Вы не ввели пароль");
   //.....
   $db->query("INSERT `users` (`login`, `email`, `pass`) VALUE('{$login}', '{$email}', '{$pass}')");

}catch(Exception $e){
   echo $e->getMessage();
}
  • Вопрос задан
  • 109 просмотров
Решения вопроса 1
abler98
@abler98
Software Engineer
Тогда исключение потеряет смысл (оно ведь должно останавливать дальнейшее выполнение кода, пока его не обработать).

Может сделать примерно так:
try {

    $errors = [];
    
    if (empty($_POST['login'])) {
        $errors[] = 'Вы не ввели логин';
    }

    ...

    if (count($errors) > 0) {
        throw new ValidationException($errors);
    }

    ...

} catch (ValidationException $e) {
    // Вывод ошибок
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы