Aller au contenu principal
🔒 Mode aperçu. Les quinze premières leçons Foundations sont gratuites ; celle-ci est Pro. Démarrez un trial de 7 jours pour débloquer l'éditeur, les conseils AI et le reste du programme. Carte requise, annulez à tout moment dans Dashboard.Démarrer le trial de 7 jours →
← CoursSenior Deep-DivesModule 9 · Error handling depthCustom exception hierarchies — most-specific except firstpredict134 / 161
+150 XP
Tâche
📝 **Tâche :** Prédisez la sortie exacte de 5 lignes. La fonction handle() essaie chaque exception contre une chaîne exceptée ordonnée. La chaîne est intentionnellement disposée avec la sous-classe la plus profonde en haut. Tracez quelle clause capture chacune des cinq entrées de test. 📋 Implémentez la fonction ci-dessus. Les tests s'exécutent automatiquement. 💡 **Indice :** Relisez la théorie si vous êtes bloqué.
Prédis la sortie

Lis le code attentivement

class AppError(Exception):
    pass


class NotFound(AppError):
    pass


class ValidationError(AppError):
    pass


class FieldError(ValidationError):
    pass


def handle(exc: Exception) -> str:
    try:
        raise exc
    except FieldError:
        return "field"
    except ValidationError:
        return "validation"
    except NotFound:
        return "not-found"
    except AppError:
        return "app"
    except Exception:
        return "unknown"


print(handle(FieldError("email bad")))
print(handle(ValidationError("schema bad")))
print(handle(NotFound("user 42")))
print(handle(AppError("generic")))
print(handle(ValueError("not ours")))

Que va afficher le programme ? Écris ici :

💬 Discussion

Soyez le premier à poser une question ou partager une astuce.
Connectez-vous pour rejoindre la discussion. La lecture est gratuite.
Chargement de la discussion…