Невозможно превысить код внутри блока catch, когда в laravel есть исключение файла - PullRequest
0 голосов
/ 15 ноября 2018

Я не могу выполнить код внутри блока catch, когда есть исключение файла. Ниже приведен код.

try {

        // Check for file size. which will make sure file exists in local server.
        filesize($localPath);
        return 'success';
    }catch(FileException $e) {

        Log::error('Error reading file size ' . $e->getMessage());
        $failedAttempts = $failedAttempts + 1;

        // Set to sleep for 10.
        sleep(10);

        // Start recursive call.
        $this->downloadMedia($url, $localPath, $failedAttempts);
    }

Я также пробовал \ Exception и \ ErrorException, но ничего не получалось. Любая помощь приветствуется.

1 Ответ

0 голосов
/ 16 ноября 2018

если вы отметите это руководство Вы увидите, filesize метод не выдает исключение.

Возвращает размер файла в байтах или FALSE

(и генерирует ошибку уровня E_WARNING) в случае ошибки.

и, похоже, вы не включили сообщение об ошибке или директиву display_error - вы этого не видите E_WARNING

Вы можете просто вызвать исключение вручную:

try {

    // Check for file existence or throw exception.
    if (!is_file($localPath)) {
      throw new Exception($localPath.' does not exists');
    }
    return 'success';
}
catch(Exception $e) {

 // here goes exception handling
}

Дополнительные советы (вне рамок вопроса) :

Нет логики проверять наличие файла повторяющимся способом.

Если файл загружен, он будет существовать, иначе вы никогда не загрузите его во время рекурсии.

Что если кто-то передаст ссылку на несуществующий файл?

Лучше просто скачай его и остановись с успехом или исключением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...