Fang eine Exception nur dort, wo du tatsächlich etwas tun kannst: neu versuchen, einen Default einsetzen oder sie mit Kontext in einen Domänenfehler übersetzen. Überall sonst lässt du sie bis zu einer einzigen Grenze durchlaufen, die loggt und eine Antwort zurückgibt. Fang spezifische Typen statt eines nackten except, schluck nie still, und nutz raise from, damit die ursprüngliche Ursache im Traceback überlebt.
Warum Interviewer das fragen
Der Umgang mit Exceptions verrät einem Interviewer, wie du dich in einem Incident verhalten wirst. Überall try except zu streuen produziert Systeme, die leise scheitern und um drei Uhr nachts nicht debuggbar sind. Sie wollen eine bewusste Policy hören: Grenzen, spezifische Exception-Typen, Erhalt der Ursachenkette und den Unterschied zwischen erwarteten Fehlern und Bugs, die laut crashen sollen.
So baust du deine Antwort auf
- Nenn die Regel: nur fangen, wo du handeln kannst.
- Beschreib das Muster der einen Fehlergrenze.
- Besteh auf spezifischen Typen und raise from.
- Trenn erwartete Fehler von echten Bugs.
Beispielantwort
Mein Default ist, Dinge durchlaufen zu lassen. Ein try except ist nur gerechtfertigt, wenn ich neu versuchen, auf etwas Sinnvolles zurückfallen oder Kontext ergänzen kann, den der Aufrufer braucht. Sonst verstecke ich nur Information. In Services baue ich das als eine Fehlergrenze, meist Middleware oder ein Exception Handler, die den vollen Traceback mit Request-ID loggt und eine saubere Antwort zurückgibt, und der Code darunter bleibt lesbar, weil er nicht mit Handlern behängt ist. Innerhalb eines Moduls fange ich enge Typen und übersetze sie mit raise from in eine Domänen-Exception, damit der Traceback die ursprüngliche Ursache behält, denn dieses Verlieren der Kette ist der Grund, warum man am Ende auf einen Stacktrace starrt, der nirgends Sinnvollem beginnt. Nacktes except ist in den Codebases, die ich verantworte, verboten, weil es auch KeyboardInterrupt und SystemExit schluckt. Die Unterscheidung, die mir am wichtigsten ist, ist erwarteter Fehler gegen Bug. Ein Timeout bei einer Drittanbieter-API ist erwartet und wird wiederholt. Ein KeyError auf meinem eigenen Dictionary ist ein Bug und soll laut sein.
Steht dieses Vorstellungsgespräch bald an? GhostPilot hört bei deinem Live-Call mit, erkennt die Frage in dem Moment, in dem sie gestellt wird, und bringt dir eine strukturierte Antwort in Echtzeit auf den Bildschirm. Probier es im nächsten Mock aus, oder hol dir einen $29 Session Pass, kein Abo, für den Ernstfall.
So funktioniert esNachfragen, mit denen du rechnen solltest
- Wie entscheidest du zwischen Retry und schnellem Scheitern?
- Was gibt dir eine Exception Group?
- Wann würdest du eine eigene Exception-Hierarchie definieren?
Weitere Fragen für Python-Entwickler
Dein Interviewer stellt seine eigene Version davon. Kopier deine echte Stellenbeschreibung in den kostenlosen Question Predictor und bekomm die 20 Fragen, die diese Rolle am wahrscheinlichsten stellt, samt dem, worauf jede wirklich abzielt.
Meine Fragen vorhersagen