Résolue

Gestion des exceptions dans une application test

# Python # Gestion des erreurs

Bonjour,
Excusez moi de vous déranger, j'ai une application test que je suis entrain de tester et je solliciterais votre aide. Il faudrait que je crée une application qui m'aide à traiter les exceptions. Du coup elle doit me renvoyer un message d'erreurs en fstring que j'aurais écris mais continuerait de traiter l'exception sans que l'application ne crash.

voici mon code:

def get_city_population(populations, city):
        city_populations = {"New York": 8336817, "Los Angeles": 3979576, "Chicago": 2679044}
        if city not in city_population:
            raise KeyError("city is not in populations data")
        try:
            print(city_population)
        except KeyError:
            print(city_population)
        return populations

Merci pour votre aide,
le resultat que j'obtiens lorsque je lance c'est juste un retour de mon dictionnaire.

Gabriel Trouvé

Mentor

Salut,

Avec un simple bloc try except par exemple ?

def get_city_population(city):
    city_populations = {"New York": 8336817, "Los Angeles": 3979576, "Chicago": 2679044}

    try:
        population = city_populations[city]
        print(f"Population de {city}: {population}")
        return population
    except KeyError:
        print(f"Erreur: {city} n'est pas dans nos données")
        return None

Bonjour Gabriel,
J'ai testé ton code le resultat obtenu n'est toujours pas celui espéré. Le feedback que je reçois c'est plutôt:
Ensure you are raising an exception (perhaps you are just printing an error?)
Du coup le bloc try/except marche mais il y'a juste un seul message qui est imprimé et pourtant le resultat attendu doit être le suivant:
1er cas:
input: "Tampas"
output: Erreur la city "Tampas" ne fait pas partie de nos données.
2e cas
input: "New york"
output: 8336817
Aussi il faut que je rentre raise KeyError dans mon code c'est juste un recommandation afin celui-ci soit plus claire.

Merci

Gabriel Trouvé

Mentor

Donc tu pourrais gérer les comme ça :

def get_city_population(city):
    city_populations = {"New York": 8336817, "Los Angeles": 3979576, "Chicago": 2679044}

    try:
        if city not in city_populations:
            raise KeyError(f'Erreur la city "{city}" ne fait pas partie de nos données.')

        population = city_populations[city]
        print(population)
        return population

    except KeyError as e:
        print(str(e))
        return None

Inscris-toi

(c'est gratuit !)

Inscris-toi

Tu dois créer un compte pour participer aux discussions.

Créer un compte

Rechercher sur le site

Formulaire de contact

Inscris-toi à Docstring

Pour commencer ton apprentissage.

Tu as déjà un compte ? Connecte-toi.