PHP 7 не может обработать исключение при отображении результата разнесения в список - PullRequest
0 голосов
/ 10 марта 2020

Я анализирую введенную пользователем дату рождения, пользователи вводят рождение в случайных форматах. Ранее я обрабатывал это с использованием исключения, но после обновления до PHP, PHP не обрабатывает исключения и сбои приложения и не вызывает showError и выдает Примечание: неопределенное смещение: 1 в :

try {
    $birth="1980";
    list($year, $month, $day) = explode("/", $birth);
}
catch (Exception $e)
{
    showError("Error in date format");
}

1 Ответ

4 голосов
/ 10 марта 2020

Не взрываться в списке. Сначала взорваться в массив, а затем деконструировать, если количество совпадений.

try
{
    $birth="1980";
    $data = explode("/", $birth);
    if(count($data) === 3) {
        list($year, $month, $day) = $data;
    } else {
        throw new Exception('Error in Date format');
    }
} catch(Exception $e) {
    showError($e->getMessage());
}

РЕДАКТИРОВАТЬ

Как подсказал комментатор EL_Vanja , в действительности нет необходимости работать с исключениями в этом случае. Я также рекомендовал бы использовать короткий путь, как это:

$birth="1980";
$data = explode("/", $birth);
if(count($data) === 3) {
    list($year, $month, $day) = $data;
} else {
    showError('Error in Date format');
}
...