Gestion d'erreurs
Il existe principalement deux types de problèmes pouvant survenir lors de l'exécution du code : les erreurs et les exceptions.
Erreur
Une erreur est un problème rencontré lors de l'exécution du script, empêchant son fonctionnement normal. Les erreurs proviennent principalement de problèmes dans le code ou l'environnement d'exécution.
Types d'erreurs
Erreur de syntaxe (Parse error)
Se produit quand le code PHP n'est pas syntaxiquement correct.
PHP ne peut pas analyser le script → le programme ne s'exécute pas.
<?php
if ($test {
echo true;
}
echo 'Next instruction';

Erreur fatale (Fatal error)
Arrête immédiatement l'exécution du script.
Exemple : appel à une fonction inexistante.
<?php
echo test();
echo 'Next instruction';

Avertissement (Warning)
Erreur non fatale : le script continue.
Exemples : accès à une variable non définie ou à une clé inexistante d'un tableau.
<?php
$array = null;
echo $array['key'];
echo 'Next instruction';

Déprécié (Deprecated)
Indique qu'une fonctionnalité est obsolète et sera supprimée dans une version future.
<?php
new DateTime(null);
echo 'Next instruction';

Gestion des erreurs
Les erreurs sont la responsabilité du développeur :
- Corriger les bugs
- Valider les entrées utilisateur
- Adapter le code à l'environnement
- Suivre les bonnes pratiques
Elles ne sont pas faites pour être capturées comme les exceptions, même si depuis PHP 7 certaines peuvent l'être via Error.
Exception
Une exception représente une situation anormale détectée par le code, souvent prévue par le développeur.
Elles sont déclenchées par throw et capturées via try/catch.
Les exceptions sont la méthode recommandée pour gérer les erreurs applicatives prévisibles.
Gestion
- Les exceptions sont principalement utilisées dans un contexte de programmation orientée objet.
- Elles sont levées (
throw) et capturées (catch) explicitement dans le code. - Il est recommandé de les consigner dans un fichier de log lorsqu'elles surviennent.
En PHP, les mots-clés try, catch et throw sont les éléments clés pour gérer les exceptions. Ce mécanisme offre une gestion des erreurs plus structurée et flexible que les méthodes traditionnelles basées sur les erreurs.
throw : Déclenche une exception.
try : Encadre le code susceptible de lever une exception.
catch : Permet de traiter une exception selon son type.
Exemples
Exemple 1 - Exception simple
<?php
try {
if (condition) {
throw new Exception('Error message');
}
…
} catch (Exception $e) {
echo "An exception has been caught: {$e->getMessage()}";
}
Exemple 2 - PHPMailer
<?php
$mail = new PHPMailer(true);
try {
…
$mail->send();
} catch (Exception $e) {
echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
}
Cas typiques où $mail->send() peut lever une exception :
- Serveur SMTP injoignable
- Mauvais identifiants SMTP
- Mauvaises adresses email
- Pièces jointes introuvables
- Timeout réseau
- Erreur 4xx / 5xx du serveur SMTP
Exemple 3 - Capturer les erreurs PHP (PHP 7+)
Sans try/catch :
<?php
$result = 10 / 0;

Avec try/catch :
<?php
try {
$result = 10 / 0;
} catch (Error $e) {
echo "An error has been captured: {$e->getMessage()}";
}

Fichier de log
PHP met à disposition la fonction error_log() pour écrire des erreurs dans un fichier :
<?php
try {
throw new Exception('An error occured');
} catch (Exception $e) {
$error_msg = "Exception: {$e->getMessage()}";
$error_msg .= " in {$e->getFile()} on line {$e->getLine()}";
error_log($error_msg, 3, '/path/to/file.log');
}
readfile('/path/to/file.log');

Résumé
En tant que développeur :
- Erreurs = ta faute → corrige ton code.
- Exceptions = problèmes prévus → gère-les proprement.