Deutsch   English   Français   Italiano  
<87zgokpw05.fsf@universite-de-strasbourg.fr.invalid>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!weretis.net!feeder6.news.weretis.net!feeder8.news.weretis.net!news.mixmin.net!aioe.org!Hr3gIpliTCIpUf9B2o38Wg.user.46.165.242.75.POSTED!not-for-mail
From: Alain Ketterlin <alain@universite-de-strasbourg.fr.invalid>
Newsgroups: fr.comp.lang.python
Subject: Re: Gestion d'exceptions Python
Date: Tue, 28 Dec 2021 16:52:26 +0100
Organization: =?utf-8?Q?Universit=C3=A9?= de Strasbourg
Message-ID: <87zgokpw05.fsf@universite-de-strasbourg.fr.invalid>
References: <gBCdnXXRa4BJhlb8nZ2dnUU7983NnZ2d@giganews.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
Injection-Info: gioia.aioe.org; logging-data="31335"; posting-host="Hr3gIpliTCIpUf9B2o38Wg.user.gioia.aioe.org"; mail-complaints-to="abuse@aioe.org";
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.2 (gnu/linux)
X-Notice: Filtered by postfilter v. 0.9.2
Cancel-Lock: sha1:AfnEIM8Sh4W4FJNKqabcMIiB9FU=
Bytes: 3594
Lines: 77

zeuwi <nospam_weezpokips@gmail.com.invalid> writes:

> J'ai ce bout de code, j'ai lev=C3=A9 une exception, mais je m'=C3=A9tonne=
 de
> voir pourquoi le code continue de tourner alors m=C3=AAme que cette
> derni=C3=A8re l=C3=A8ve une exception. Lors des tests dans l'interpr=C3=
=A9teur, le
> rentre volontairement une ann=C3=A9e n=C3=A9gative, une erreur est bien l=
ev=C3=A9e
> cependant j'ai le r=C3=A9sultat qui ressort et m'indique qu'il s'agit d'u=
ne
> ann=C3=A9e non bissextile par exemple. Est ce bien comme cela qu'une
> exception doit fonctionner?

La clause "except" traite/intercepte l'exception, il sert =C3=A0 cela.
L'exception est donc intercept=C3=A9e, et le code se poursuit normalement.
C'est exactement ce qui doit se passer.

> try:
> 	ann=C3=A9e =3D int(ann=C3=A9e)
> 	if ann=C3=A9e <=3D 0:
>                 raise ValueError("e;L'ann=C3=A9e saisie est n=C3=A9gative=
 ou nulle"e;)
> except ValueError:
> 	print('Erreur lors de la conversion de l'ann=C3=A9e')

Le traitement de ton exception consiste ici =C3=A0 afficher un message (puis
=C3=A0 continuer comme si de rien n'=C3=A9tait). Ce n'est presque jamais un=
e bonne
id=C3=A9e.

Si tu ne veux pas intercepter l'exception : enl=C3=A8ve try et sa clause
except (et aussi print).

Si tu veux afficher un message et "re-d=C3=A9clencher" l'exception, utilise

    except ValueError:
        print (...)
        raise

Tu peux aussi donner explicitement un nom =C3=A0 l'exception

    except ValueError as e:
        print (...)
        raise e

Dans ce cas, le message sera affich=C3=A9 par print, et la suite du code ne
sera pas ex=C3=A9cut=C3=A9e (jusqu'=C3=A0 ce qu'un autre bloc try/except in=
tercepte
l'exception).

Dans ton cas, tu veux manifestement ne pas faire le calcul en cas
d'erreur. Le code devrait =C3=AAtre

    ann=C3=A9e =3D input("e;veuillez saisir une ann=C3=A9e: "e;)
=20=20=20=20
    try:
        ann=C3=A9e =3D int(ann=C3=A9e)
        if ann=C3=A9e <=3D 0:
            raise ValueError("e;L'ann=C3=A9e saisie est n=C3=A9gative ou nu=
lle"e;)
        if ann=C3=A9e % 400 =3D=3D 0 or (ann=C3=A9e % 4 =3D=3D 0 and ann=C3=
=A9e % 100 !=3D0):
            print("e;Bisextile"e;)
        else:=20
            print("e;Non Bisextile"e;)
    except ValueError:
        print('Erreur lors de la conversion de l'ann=C3=A9e')

J'ai laiss=C3=A9 ces saloperies de '"e;' mais =C3=A7a serait bien que tu no=
us les
=C3=A9pargnes. (Ou alors est-ce juste chez moi ?)

> Cdt,

Sans commentaire.

-- Alain.