Kasta anpassade exception-klasser
Definiera domänfel som kan mappas till JSON.
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):
passLä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 = 402Skicka 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 = messageKasta 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_codeReturnera 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_codeEn 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):
passAnvä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 = 400Hå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!
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
- abort och HTTP-felkoder
- Registrera errorhandler-funktioner
- Kasta anpassade exception-klasser
- Enhetliga JSON-felkuvert