Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > de.comp.lang.python > #5505

Exception erneut werfen (re-raise)

From Christian Barthel <bch@online.de>
Newsgroups de.comp.lang.python
Subject Exception erneut werfen (re-raise)
Date 2019-06-23 13:04 +0200
Message-ID <87blyo5zqn.fsf@x230.onfire.org> (permalink)

Show all headers | View raw


Ich habe einen Code-Auszug der eine HTTP Bibliothek (requests
Modul) nutzt.  Diese wirft unterschiedliche Exceptions die ich
auffange.  Ich würde aber gerne die Exception an dieser Stelle
noch nicht fangen, sondern im Prinzip an den Aufrufer weitergeben
damit ich dann alle Exceptions in der Hauptschleife zentral
fangen kann und Loggen kann.

Dies geht; allerdings verliere ich dann die Möglichkeit auf die
lokalen Variablen der innersten Funktion (dort wo der Request
erzeugt und konstruiert wird) zuzugreifen.

Meine Idee im Moment wäre mittels "raise .. from.." eine neue
Exception zu generieren und die zusätzlichen Parameter als
Argumente mitzugeben.  Illustrativ und vereinfacht würde das in
etwa so aussehen:
 
   def foo():
       assert 0 == 1
   
   def bar():
       someVar = .. 
       try:
           foo()
       except AssertionError as e:
           raise AssertionError('foo ' + str(foo)) from e
   
Somit kann ein Aufrufer von bar() die Belegung von foo in einer
Fehlermeldung einbauen und die Daten der Ursprünglichen Exception
sind weiter vorhanden.   Mich würde interessieren ob es eine
Alternative oder einfachere Möglichkeit dazu geben würde und wie
(erfahrenere) Python Programmierer das lösen würden?

-- 
Christian Barthel <bch@online.de>

Back to de.comp.lang.python | Previous | NextNext in thread | Find similar


Thread

Exception erneut werfen (re-raise) Christian Barthel <bch@online.de> - 2019-06-23 13:04 +0200
  Re: [Python-de] Exception erneut werfen (re-raise) Peter Otten <__peter__@web.de> - 2019-06-23 15:24 +0200
    Re: [Python-de] Exception erneut werfen (re-raise) Christian Barthel <bch@online.de> - 2019-06-23 17:42 +0200

csiph-web