- Direkt bevor ich die Ausnahme auslöse
- Wenn ich die Ausnahme in einer höheren Ebene abfang
- 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?
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
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...
Mobile version