2017-10-16 7 views
-1

I en utilisant fonction standard PHP:Comment attraper les erreurs PHP en tant que validation douce

try 
{ 

} 
catch (Exception $exc) 
    { 
     echo $exc->getMessage(); 
    } 

...

throw new Exception('Error Message'); 

pour valider les données et retourner divers messages à l'utilisateur. Et ça fonctionne parfaitement. Mais avec cette méthode tout s'arrêtera si une nouvelle exception a été tracée (ce qui est juste). Mais je voudrais utiliser la validation douce (quand l'erreur apparaît mais que l'utilisateur peut avancer). Est-ce que PHP a quelque chose comme ça?

+0

Le code qui déclenche l'exception doit être _inside_ le bloc try. Si cela ne fonctionne pas, veuillez poster plus de votre code. –

+0

@David oui. Ceci est juste une illustration – Klapsius

+1

Il me semble que la solution est déjà dans le titre: vous "attrapez" une exception pour qu'elle ne s'arrête pas tout, pour contenir l'erreur. Vous pouvez alors décider de continuer avec votre programme ou non. S'il vous plaît expliquer mieux ce que vous demandez. – deceze

Répondre

1

Essayez de regrouper les messages d'erreur dans un tableau et renvoyez-le.

if(strlen($username) < 3) $errors[] = "Username is too short"; 
if(strlen($password) < 3) $errors[] = "Password is too short"; 

return $errors; 
2

Je pense que cela vous aidera à comprendre comment les try...catch fonctionne et comment obtenir les messages d'exception. En savoir plus sur exception ici http://php.net/manual/en/language.exceptions.php

Code de démonstration:

$exception = []; 
try { 
    function1(); 
    function2(); 
} 
catch(Exception $e){ 
    $exception['msg'] = $e->getMessage(); 
    $exception['code'] = $e->getCode(); 
} 

function3(); 
print '<pre>'; 
print_r($exception); 
print '</pre>'; 

Ici, le function3() sera toujours exécuté. Mais si la fonction1() déclenche une exception, function2() ne sera pas exécuté plus loin. Mais si une exception se produit, vous pouvez recevoir les données $exception.