Maison > Questions et réponses > le corps du texte
essayer{
echo 'essayez <br/>';
$mysql = new mysqli('localhost', 'root', '111', 'test');
} attraper (Exception $e){
echo 'attraper <br/>';
echo $e->getMessage();
Le code est comme ci-dessus, une exception s'est produite
Résultat :
essayez
Avertissement : mysqli::mysqli() : (28000/1045) : Accès refusé pour l'utilisateur 'root'@'localhost' (en utilisant le mot de passe : OUI) dans /home/test/its2/webroot/public/unserialize.php à la ligne 31
Pourquoi le catch de sortie n'est-il pas exécuté ?
PHPz2017-05-16 13:04:45
Vous devez dire à mysqli de lancer une exception au lieu d'un avertissement.
mysqli_report(MYSQLI_REPORT_STRICT); // 加上这一行!!!
try{
echo 'try <br/>';
$mysql = new mysqli('localhost', 'root', '111', 'test');
} catch (Exception $e){
echo 'catch <br/>';
echo $e->getMessage();
}
Visitez à nouveau, les résultats sont les suivants :
essayez
catch
Accès refusé pour l'utilisateur 'root'@'localhost' (en utilisant le mot de passe : OUI)
阿神2017-05-16 13:04:45
Veuillez distinguer clairement la différence entre l'avertissement et l'exception.
Les avertissements et les erreurs en PHP sont des problèmes que PHP rappelle aux développeurs dans le programme. Ce problème ne doit pas nécessairement être traité.
L'exception est un problème qui est personnalisé et doit en principe être traité. une exception correspondante pour Exception Traité