РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
692 of 1392 menu

Исключение FileNotFoundException

Исключение FileNotFoundException выбрасывается в Laravel, когда приложение пытается выполнить операцию с файлом, который отсутствует в файловой системе. Это исключение наследуется от базового класса RuntimeException и входит в пространство имён Illuminate\Contracts\Filesystem. Чаще всего оно возникает при использовании фасада Storage, работе с локальными файлами или при попытке загрузки ресурсов через вспомогательные функции Laravel.

Причины возникновения

Исключение выбрасывается в следующих случаях:

1. При попытке прочитать файл, которого нет по указанному пути.

2. При попытке удалить несуществующий файл.

3. При попытке получить размер или информацию о файле.

4. При попытке скопировать или переместить файл, который отсутствует.

Синтаксис

<?php throw new FileNotFoundException($path, $code, $previous); ?>

Конструктор класса принимает три параметра:

- $path - путь к файлу, который не был найден (строка);

- $code - код ошибки (целое число, по умолчанию 0);

- $previous - предыдущее исключение для цепочки (опционально).

Пример

Давайте попробуем прочитать файл, который не существует, с помощью фасада Storage:

<?php namespace App\Http\Controllers; use Illuminate\Support\Facades\Storage; class FileController extends Controller { public function readFile() { $content = Storage::get('non_existent_file.txt'); echo $content; } } ?>

Результат выполнения кода:

"FileNotFoundException: File not found at path: non_existent_file.txt"

Пример

Попробуем удалить файл, которого нет в системе, используя вспомогательную функцию unlink:

<?php namespace App\Http\Controllers; class FileController extends Controller { public function deleteFile() { $path = storage_path('app/missing_file.txt'); if (file_exists($path)) { unlink($path); echo "File deleted successfully"; } else { echo "File not found at path: " . $path; } } } ?>

Результат выполнения кода:

"File not found at path: /var/www/storage/app/missing_file.txt"

Пример

Обработка исключения с помощью конструкции try-catch при работе с фасадом Storage:

<?php namespace App\Http\Controllers; use Illuminate\Support\Facades\Storage; use Illuminate\Contracts\Filesystem\FileNotFoundException; class FileController extends Controller { public function safeReadFile() { try { $content = Storage::get('config/settings.json'); echo $content; } catch (FileNotFoundException $e) { echo "Error: File not found - " . $e->getPath(); } } } ?>

Результат выполнения кода:

"Error: File not found - config/settings.json"

Пример

Попытка получить размер файла, который не существует, с помощью фасада Storage:

<?php namespace App\Http\Controllers; use Illuminate\Support\Facades\Storage; use Illuminate\Contracts\Filesystem\FileNotFoundException; class FileController extends Controller { public function getFileSize() { try { $size = Storage::size('uploads/image.png'); echo "File size: " . $size . " bytes"; } catch (FileNotFoundException $e) { echo "File not found: " . $e->getPath(); } } } ?>

Результат выполнения кода:

"File not found: uploads/image.png"

Смотрите также

  • исключение Handler,
    которое обрабатывает все исключения в приложении
  • исключение HttpException,
    которое выбрасывается при HTTP-ошибках
  • исключение QueryException,
    которое возникает при ошибках в запросах к базе данных
  • исключение ValidationException,
    которое выбрасывается при ошибках валидации данных
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить