En Swift, la gestion des exceptions est gérée principalement par l’utilisation de do, try, catch, et throw. Voici comment cela fonctionne avec des exemples.
throw)Pour signaler qu’une erreur s’est produite, vous pouvez utiliser throw. Cela peut être fait à partir d’une fonction, d’une méthode, ou d’un bloc de code.
enum CustomError: Error {
case myError
}
func exampleThrowingFunction() throws {
// ...
throw CustomError.myError
}
Dans cet exemple, la fonction exampleThrowingFunction peut lancer une erreur de type CustomError.myError en utilisant throw.
try)Lorsque vous appelez une fonction qui peut lancer une exception, utilisez try pour indiquer que vous êtes conscient du risque.
do {
try exampleThrowingFunction()
} catch CustomError.myError {
print("Une erreur personnalisée s'est produite.")
} catch {
print("Une erreur inattendue s'est produite.")
}
Ici, try est utilisé pour appeler la fonction exampleThrowingFunction(), et si une exception est lancée, le code dans le bloc catch approprié sera exécuté.
Vous pouvez également créer vos propres fonctions qui lèvent des exceptions en utilisant throw.
func divide(_ dividend: Int, by divisor: Int) throws -> Int {
guard divisor != 0 else {
throw CustomError.myError
}
return dividend / divisor
}
Ici, la fonction divide tente de diviser dividend par divisor, mais elle lève une exception si divisor est zéro.
Lorsque vous appelez une fonction qui peut lancer une exception, vous devez l’entourer d’un bloc do-catch pour gérer les exceptions potentielles.
do {
let result = try divide(10, by: 2)
print("Résultat : \(result)")
} catch CustomError.myError {
print("Impossible de diviser par zéro.")
} catch {
print("Une erreur inattendue s'est produite.")
}
Ici, nous appelons la fonction divide avec try, et si une exception est levée, elle est gérée dans le bloc catch approprié.
La gestion des exceptions en Swift permet de gérer élégamment les erreurs tout en conservant un code lisible et expressif.
Il est important de comprendre où et comment utiliser
try,catch, etthrowpour gérer les exceptions de manière appropriée dans votre code.
La documentation officielle est particulièrement claire sur ce point : Gestion des erreurs en Swift