Подтвердить что ты не робот

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!";
}

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

4b9b3361

Ответ 1

Вы можете сделать это вот так.

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 {}), и они будут распространяться вверх.

Ответ 2

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

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);
}

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

Ответ 3

Операторы

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

Ответ 4

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

Ответ 5

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

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

Ответ 6

Вы должны взглянуть на [Исключительные рекомендации в PHP 5.3] [1]

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

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