python / intermediate
Snippet
Benutzerdefinierte Exception-Handler-Zuordnung für strukturierte Fehler-Antworten
Erstellen benutzerdefinierter Exception-Klassen, die von Pythons Exception erben, ermöglicht es Anwendungs-Views, domänenspezifische Fehler auszulösen, die abgefangen und in einheitliche JSON-Antwortstrukturen formatiert werden können.
snippet.py
python
1
2
3
4
5
6
7
8
9
10
11
12
13
from django.http import JsonResponseclass DatabaseSyncError(Exception):def __init__(self, message, code=500):super().__init__(message)self.code = codedef handle_custom_exception(request, exc):if isinstance(exc, DatabaseSyncError):payload = {'error': str(exc), 'status_code': exc.code}return JsonResponse(payload, status=exc.code)return JsonResponse({'error': 'Unhandled internal server error'}, status=500)
django
Erklärung
1
class DatabaseSyncError(Exception):
Definiert eine benutzerdefinierte Fehlerklasse, die von der Python Exception erbt, um Sync-Fehler abzufangen.
2
def __init__(self, message, code=500):
Initialisiert Instanzattribute wie beschreibende Fehlermeldung und HTTP-Statuscode.
3
if isinstance(exc, DatabaseSyncError):
Prüft, ob der abgefangene Fehler dem benutzerdefinierten Typ entspricht, bevor die Antwort strukturiert wird.
4
return JsonResponse(payload, status=exc.code)
Gibt eine strukturierte JSON-HTTP-Antwort unter Verwendung des benutzerdefinierten Statuscodes zurück.