33 votes

essayez l'instruction catch en PHP où le fichier n'est pas téléchargé

Je comprends ce que font les instructions try-catch, mais en lisant la documentation sur php.net, je ne serais pas en mesure de la mettre en oeuvre dans mon propre code. J'ai besoin d'un exemple réel pour m'aider à comprendre.

Comment puis-je transformer cet exemple en instruction try catch si le téléchargement échoue?

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

Ce n'est peut-être pas un bon exemple, mais toute aide serait la bienvenue.

52voto

Tom Haigh Points 32314

Vous pouvez le faire comme ça.

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

C'est un peu inutile pour l'exemple ci-dessus, mais vous devriez avoir l'idée. Notez que vous pouvez lancer les exceptions de n’importe où (par exemple, dans une fonction / méthode que vous appelez depuis try {}) et elles se propageront vers le haut.

9voto

Kazar Points 16014

Eh bien, si vous voulez utiliser des exceptions, vous pouvez faire quelque chose comme:

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

Je sais que cela peut sembler énorme - mais vous pouvez appeler la méthode à partir de n'importe où dans la pile d'appels et intercepter l'exception à tout moment.

2voto

Simon Jackson Points 36

J'ai trouvé cela utile.

Un bon exemple d'application de la gestion des exceptions et d'essayer de capturer des choses est disponible ici .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X