Sollte ich Ausnahmen beim Auslösen oder beim Abfangen protokollieren? [geschlossen]Python

Python-Programme
Anonymous
 Sollte ich Ausnahmen beim Auslösen oder beim Abfangen protokollieren? [geschlossen]

Post by Anonymous »

Wenn ein Fehler auftritt, sehe ich zwei mögliche Orte, an denen ich ihn protokollieren kann:
  • Direkt bevor ich die Ausnahme auslöse
  • Wenn ich die Ausnahme in einer höheren Ebene abfang
Beide erscheinen mir vernünftig, aber ich verstehe die Kompromisse der einzelnen Ansätze nicht.
  • Bietet die Protokollierung an der Raise-Site einen besseren Kontext?
  • Ist die Protokollierung an der Catch-Site architektonisch sinnvoller?
  • Gibt es eine allgemein akzeptierte Best Practice?
Genauer gesagt: Verliere ich dabei alle wichtigen Fehler/Ausnahmen

Code: Select all

def foo(payload):
try:
# some api/lib call
except LibSpecificException as e:
logging.info("Lib call failed")
raise MyCustomException("Lib call failed") from e

def main():
data = [1,2,3,4]
try:
for datum in data:
foo(datum)
# some other code that might trigger MyCustomException
except MyCustomException as e
logging.exception("Core logic in main failed")
# clean up and shutdown or ignore or reraise - have those all in different places
Mein Entwurf für Beispielcode könnte hier fehlerhaft sein.
Jedenfalls könnte ich mich mit Protokollen zuspammen, wenn ich mich hier nicht auf der oberen Ebene abfänge und anhalte, aber es kann sein, dass der Kontext verloren geht, wenn ich mich nicht auf der unteren Ebene anmelde...

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post