[python-users] Python3 - Exception-Context überschreiben/raise from - gut oder schlecht?
Till Maas
opensource at till.name
Mi Apr 17 13:17:28 CEST 2019
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
Mehr Informationen über die Mailingliste python-users