• 16 mars 2025

[16/16] Gestion des erreurs

‎

Introduction

‎

En programmation, tout ne se passe pas toujours comme prévu. Un fichier peut être introuvable, une donnée peut être invalide, une opération peut échouer. Dans ces cas-là, il est essentiel de gérer les erreurs intelligemment, sans faire planter toute votre application.

‎

Swift propose un système robuste pour gérer les erreurs, basé sur trois mots-clés : throw, try et do-catch. Ce système vous permet de lancer, attraper, et traiter les erreurs de manière claire et sécurisée.

‎

Dans ce chapitre, vous allez apprendre à :

  • comprendre le principe de la gestion d’erreur,

  • utiliser do, try et catch,

  • créer vos propres types d’erreurs,

  • écrire des fonctions qui peuvent renvoyer des erreurs.

‎


‎

Pourquoi gérer les erreurs ?

‎

Imaginons une application qui télécharge des fichiers. Que se passe-t-il si la connexion internet est coupée ? Si le fichier n’existe pas ? Sans gestion d’erreur, votre app plantera. Avec une bonne gestion, vous pouvez informer l’utilisateur, proposer une solution, ou continuer proprement.

‎


‎

Le système do-try-catch

‎

Voici la syntaxe de base de la gestion d’erreurs en Swift :

do {
    try operationRisquee()
    print("Succès ✅")
} catch {
    print("Une erreur est survenue ❌")
}
  • try : indique que la fonction peut échouer.

  • do : démarre un bloc dans lequel on tente l’opération.

  • catch : capture l’erreur si elle est levée, et permet de la gérer.

‎


‎

Créer un type d’erreur personnalisé

‎

En Swift, une erreur est un type qui conforme au protocole Error. Vous pouvez créer vos propres erreurs avec une énumération :

enum ErreurDeConnexion: Error {
    case pasDeReseau
    case identifiantsInvalides
    case serveurInaccessible
}

‎

Vous venez de créer un type d’erreur personnalisé que vous pouvez maintenant utiliser dans vos fonctions.

‎


‎

Lancer une erreur avec throw

‎

Une fonction qui peut échouer doit être marquée avec le mot-clé throws, et elle peut ensuite lancer une erreur avec throw.

‎

func seConnecter(utilisateur: String, motDePasse: String) throws {
    if utilisateur.isEmpty || motDePasse.isEmpty {
        throw ErreurDeConnexion.identifiantsInvalides
    }
    // Simulation de succès sinon
    print("Connexion réussie !")
}

‎

Gérer l’erreur avec précision

‎

Vous pouvez utiliser plusieurs blocs catch pour traiter chaque cas d’erreur spécifiquement :

do {
    try seConnecter(utilisateur: "", motDePasse: "1234")
} catch ErreurDeConnexion.identifiantsInvalides {
    print("Veuillez vérifier vos identifiants.")
} catch ErreurDeConnexion.pasDeReseau {
    print("Aucune connexion disponible.")
} catch {
    print("Erreur inconnue.")
}

‎

Ce code vous permet d’apporter des réponses précises et adaptées aux différentes erreurs possibles.

‎


‎

Exemple concret : vérifier un mot de passe

‎

Voici un exemple pédagogique d’une fonction qui vérifie un mot de passe et déclenche une erreur si celui-ci ne remplit pas certaines conditions :

enum ErreurMotDePasse: Error {
    case tropCourt
    case pasDeChiffre
}

func verifierMotDePasse(_ motDePasse: String) throws {
    if motDePasse.count < 6 {
        throw ErreurMotDePasse.tropCourt
    }
    if motDePasse.rangeOfCharacter(from: .decimalDigits) == nil {
        throw ErreurMotDePasse.pasDeChiffre
    }
    print("Mot de passe valide ✅")
}

do {
    try verifierMotDePasse("abc")
} catch ErreurMotDePasse.tropCourt {
    print("Le mot de passe est trop court.")
} catch ErreurMotDePasse.pasDeChiffre {
    print("Le mot de passe doit contenir au moins un chiffre.")
}

‎

Résultat :

Le mot de passe est trop court.

‎

Les autres formes de try

‎

try? : transforme l’erreur en valeur optionnelle

let resultat = try? verifierMotDePasse("abc")

‎

Si une erreur est levée, la valeur sera nil. Cela permet d’éviter les do-catch quand une gestion détaillée n’est pas nécessaire.

‎

try! : force l’exécution (à éviter si vous n’êtes pas sûr)

try! verifierMotDePasse("abc123") // Attention : si une erreur est levée, l'app plante

‎

Conclusion

‎

La gestion des erreurs est une compétence essentielle en Swift. Elle vous permet de prévoir les situations inattendues, de maintenir la stabilité de votre application, et d’offrir une meilleure expérience utilisateur.

‎

Dans ce chapitre, vous avez appris à :

  • utiliser do, try et catch pour intercepter les erreurs,

  • créer vos propres types d’erreurs avec une enum,

  • lancer des erreurs avec throw,

  • proposer des messages clairs selon chaque cas.

‎

✅ Une application professionnelle ne se contente pas de fonctionner : elle gère les échecs avec élégance.

0 comments

Rejoindreor login to leave a comment