[python-users] Python3 - Exception-Context überschreiben/raise from - gut oder schlecht?

Arndt Droullier arndt at nive.co
Mi Apr 17 14:50:27 CEST 2019


Ein anderer Ansatz (mache ich jedenfalls in meinen Programmen immer so):
Wenn verkettete Exceptions kommen ist eigentlich immer unsauber
programmiert. Die Fälle wo
sich nicht absehen lässt was passiert, und Exceptions sich nicht so
verarbeiten lassen dass
der Code danach sauber durchläuft, sind eigentlich die Ausnahme.

Ich kenne die Anwendung nicht, insofern kann ich auch nicht sagen ob der
Ansatz funktioniert
oder das zu den Ausnahmen zählt.

Arndt.



>
> > Am 17.04.2019 um 13:17 schrieb Till Maas <opensource at till.name>:
> >
> > Hi,
> >
> > in einem Python-Projekt an dem ich mitwirke ist aufgefallen, dass der
> > Default-Python3-Exception-Handler bei Ketten von Exceptions ausgibt,
> > welche Exceptions zuvor aufgetreten sind, Beispiel:
> >
> > Traceback (most recent call last):
> >  File "/home/fge/Source/nmstate/libnmstate/nm/checkpoint.py", line 125,
> in destroy
> >    self._manager.interface.CheckpointDestroy(self._dbuspath)
> >  File "/usr/lib64/python3.7/site-packages/dbus/proxies.py", line 70, in
> __call__
> >    return self._proxy_method(*args, **keywords)
> >  File "/usr/lib64/python3.7/site-packages/dbus/proxies.py", line 145, in
> __call__
> >    **keywords)
> >  File "/usr/lib64/python3.7/site-packages/dbus/connection.py", line 651,
> in call_blocking
> >    message, timeout)
> > dbus.exceptions.DBusException:
> org.freedesktop.NetworkManager.InvalidArguments: checkpoint
> /org/freedesktop/NetworkManager/Checkpoint/7 does not exist
> >
> > During handling of the above exception, another exception occurred:
> >
> > Traceback (most recent call last):
> >  File "/home/fge/Source/nmstate/libnmstate/netapplier.py", line 72, in
> commit
> >    nmcheckpoint.destroy()
> >  File "/home/fge/Source/nmstate/libnmstate/nm/checkpoint.py", line 127,
> in destroy
> >    raise NMCheckPointError(str(e))
> > libnmstate.nm.checkpoint.NMCheckPointError:
> org.freedesktop.NetworkManager.InvalidArguments: checkpoint
> /org/freedesktop/NetworkManager/Checkpoint/7 does not exist
> >
> >
> > Für mich sieht das sehr nützlich aus. Mein Mitstreiter hat allerdings
> > Bedenken, weil dies ja interne Details ausgibt (statt nur der Exception,
> > die Teil der API ist) und schlägt vor, die zu unterbinden mit
> >
> > raise from None
> >
> > Was sind Eure Erfahrungen/Meinungen dazu? Ist `raise from None` sinnvoll
> > oder nicht? Ich habe eher das Gefühl, dass nicht.
> >
> > Falles es Euch interessiert, Details gibt es hier:
> > https://github.com/nmstate/nmstate/pull/317#issuecomment-483901082
> >
> > Viele Grüße
> > Till
> >
> ________________________________________
>
> Diese Mail erhalten Sie ueber die Mailingliste python-users der
> Universitaet zu Koeln
> Nachrichten an: python-users at uni-koeln.de
> Abonnement und Benutzereinstellungen:
> https://lists.uni-koeln.de/mailman/listinfo/python-users
> Listenarchiv: https://lists.uni-koeln.de/pipermail/python-users/
>
> pyCologne Homepage: http://pycologne.de/
>


----------------------------------------------------------------------------------------------
nive.co <http://www.nive.co/>
Arndt Droullier
-------------- nächster Teil --------------
Ein Dateianhang mit HTML-Daten wurde abgetrennt...
URL: <http://lists.uni-koeln.de/pipermail/python-users/attachments/20190417/33a71ffc/attachment.html>


Mehr Informationen über die Mailingliste python-users