Flask Academy · Lektion

Kasta anpassade exception-klasser

Definiera domänfel som kan mappas till JSON.

Lektion 3 av 413 steg

Kasta anpassade exception-klasser är en gratis lektion i Flask Academy på CoddyKit. Detta är lektion 3 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Flask Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Flask Academy innehåller totalt 4 lektioner.

Fel som talar ert domänspråk

Tal som 400 är generiska. Ett custom exception namnger det verkliga problemet, till exempel en misslyckad betalning eller en nådd kvot.

Skapa en subklass till Exception

Börja med att definiera en klass som ärver från Exception. Då får ni ett tydligt fel som ni kan kasta själva.

class PaymentError(Exception):
    pass

Lägg till en statuskod

Ge klassen attributet status_code så att en hanterare vet vilken HTTP-kod som ska skickas när felet inträffar.

class PaymentError(Exception):
    status_code = 402

Skicka med ett meddelande

Spara ett mänskligt läsbart meddelande i konstruktorn. Er handler kan senare läsa det och lägga in det i svarskroppen.

def __init__(self, message):
    self.message = message

Kasta det i en vy

I en vy behöver ni bara raise felet när något går fel. Flask letar sedan efter en matchande hanterare.

if not paid:
    raise PaymentError("Card declined")

Hantera den anpassade klassen

Registrera en errorhandler för er klass. Den tar emot instansen, så att ni kan läsa både meddelandet och statuskoden.

@app.errorhandler(PaymentError)
def on_pay(e):
    return e.message, e.status_code

Returnera JSON från den

För ett API omvandlar ni felet till JSON i hanteraren. Klienterna får ett strukturerat fel som de kan parse på ett tillförlitligt sätt.

return jsonify(error=e.message), e.status_code

En bas för många fel

Skapa en enda base class och låt specifika fel ärva från den. Då kan en hanterare täcka hela er felhierarki.

class ApiError(Exception):
    pass

Använd rimliga standardvärden

Ge basen en standardiserad status_code, till exempel 400. Subklasser åsidosätter den bara när de behöver en annan.

class ApiError(Exception):
    status_code = 400

Håll logiken borta från vyerna

Genom att kasta domänfel kan vyerna hållas korta. handler ansvarar för formateringen, så varje vy behöver bara signalera vad som gick fel.

Därför fungerar detta i stor skala

När en app växer håller anpassade undantag fellogiken samlad på ett prydligt ställe. Nya error types kan anslutas till samma rena flöde.

Snabb kontroll

Hur utlöser en vy ert domänfel?

Sammanfattning

Ni skapade klasser för custom exception med statuskod och meddelande, kastade dem i vyer och kopplade dem till ren JSON. Fantastiskt!

Gratis att börja

Lär dig Python med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
30
Lektioner
120

Vanliga frågor

Är lektionen ”Kasta anpassade exception-klasser” gratis?

Ja – hela texten till ”Kasta anpassade exception-klasser” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Flask Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i Flask Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”Kasta anpassade exception-klasser”?

Definiera domänfel som kan mappas till JSON. Ni övar på Flask Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Flask Academy?

Du behöver inga förkunskaper. Utbildningen i Flask Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 4.

Hur lång tid tar lektionen ”Kasta anpassade exception-klasser”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Flask Academy-lektionen?

Ja. Varje Flask Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. abort och HTTP-felkoder
  2. Registrera errorhandler-funktioner
  3. Kasta anpassade exception-klasser
  4. Enhetliga JSON-felkuvert
← Tillbaka till Flask Academy