Intereting Posts
как включить sqlite3 для php? Загрузите из хранилища Laravel без загрузки всего файла в память PHP, передающий несколько переменных на нескольких страницах Блокировать определенный IP-блок с моего сайта в PHP Magento – передача данных между контроллером и блоком Как удалить последнюю запятую (,) из массива? Сброс соединения Apache PHP5-FPM с помощью одноранговой сети Примечание. Массив для преобразования строк в C: \ xampp \ htdocs \ example \ echo.php в строке 8 Array Как использовать атрибуты данных woocommerce в цикле Строгая стандартная ошибка при загрузке изображения с помощью скрипта PHP Чтение данных Geotag с изображения в php mysql Выбор из двух разных таблиц. Я должен ДОЛЖЕН обновить свой PHP-SDK от 3.2 до 4.0 после 30 апреля 2015 года (истекает срок действия графика API 1.0)? могу ли я использовать PHP-SDK 3.2 с Graph API 2.0? Smarty + CodeIgniter – правильный способ использования модели PHP curl сбрасывает длину контента, если CURLOPT_POST задано с curl_setopt_array?

try catch в PHP, где файл не загружается

Я понимаю, что делают утверждения try-catch, но, читая документацию на php.net, я не смог бы реализовать ее в своем собственном коде. Мне нужен реальный пример, чтобы помочь мне понять.

Как включить этот пример в инструкцию try catch, если загрузка не была успешной?

$move = move_uploaded_file($_FILES['file']['tmp_name'], $_SERVER['DOCUMENT_ROOT']."/uploads/".$_FILES['file']['name']); if (!$move) { die ('File didn't upload'); } else { //opens the uploaded file for extraction echo "Upload Complete!"; } 

Это не может быть хорошим примером для работы, но любая помощь будет оценена по достоинству.

Вы могли бы сделать это так.

 try { //throw exception if can't move the file if (!move_uploaded_file( ... )) { throw new Exception('Could not move file'); } //do some more things with the file which may also throw an exception //... //ok if got here echo "Upload Complete!"; } catch (Exception $e) { die ('File did not upload: ' . $e->getMessage()); } 

Это немного бессмысленно для приведенного выше примера, но вы должны получить эту идею. Обратите внимание, что вы можете выбросить исключение из любого места (например, внутри функции / метода, вызываемой с помощью try {}), и они будут распространяться вверх.

Ну, если вы хотите использовать исключения, вы можете сделать что-то вроде:

 function handleUpload() { $move = move_uploaded_file($_FILES['file']['tmp_name'], $_SERVER['DOCUMENT_ROOT']."/uploads/".$_FILES['file']['name']); if (!$move) { throw new Exception('File Didnt Upload'); } } try { handleUpload(); echo "File Uploaded Successfully"; } catch(Exception $ex) { die($ex->getMessage); } 

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

операторы try-catch используются для обработки исключений. Я не верю, что функция move_uploaded_files может выбрасывать и move_uploaded_files , поэтому я считаю, что код написан правильно. После вызова вы просматриваете код возврата. Если это неверно, вы завершаете обработку, иначе вы достигнете успеха в отчете.

Согласно аналогичной записи в PHPbug, только код OO (Object-Oriented code) генерирует исключения. Это означало бы, что такие функции, как move_uploaded_file, не будут генерировать собственные исключения, но какой-то другой код будет.

Я нашел это полезным.

Здесь приведен хороший пример применения обработки исключений и try catch.

Вы должны взглянуть на [Except Best Practices в PHP 5.3] [1]

Обработка исключений в PHP не является новой функцией на любом участке. В следующей ссылке вы увидите две новые функции в PHP 5.3, основанные на исключениях. Первый – вложенные исключения, а второй – новый набор типов исключений, предлагаемых расширением SPL (который теперь является основным расширением среды выполнения PHP). Обе эти новые функции нашли свой путь в книге лучших лучших практик и заслуживают подробного изучения.

http://ralphschindler.com/2010/09/15/exception-best-practices-in-php-5-3