Kast egendefinerte exception-klasser
Definer domenefeil som kan mappes til JSON.
Kast egendefinerte exception-klasser er en gratis leksjon i Flask Academy på CoddyKit. Dette er leksjon 3 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Flask Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Flask Academy inneholder totalt 4 leksjoner.
Feil som uttrykker domenet
Numre som 400 er generelle. Et custom exception navngir det egentlige problemet, for eksempel en betaling som mislyktes eller en kvote som ble nådd.
Opprett en subklasse av Exception
De begynner med å definere en klasse som arver fra Exception. Da får De en tydelig feil som De kan utløse selv.
class PaymentError(Exception):
passLegg til en statuskode
Gi klassen et status_code-attributt, slik at en handler vet hvilken HTTP-kode som skal sendes når feilen utløses.
class PaymentError(Exception):
status_code = 402Ta med en melding
Lagre en menneskelig lesbar melding i konstruktøren. handler kan senere lese den og plassere den i responskroppen.
def __init__(self, message):
self.message = messageUtløs den i en view
Inne i en view bruker De ganske enkelt raise når noe går galt. Flask leter deretter etter en tilsvarende handler.
if not paid:
raise PaymentError("Card declined")Håndter den egendefinerte klassen
Registrer en errorhandler for klassen. Den mottar instansen, slik at De kan lese både meldingen og statuskoden.
@app.errorhandler(PaymentError)
def on_pay(e):
return e.message, e.status_codeReturner JSON fra den
For et API gjør De feilen om til JSON inne i handleren. Klientene får en strukturert feil som de kan parse pålitelig.
return jsonify(error=e.message), e.status_codeÉn base for mange feil
Opprett én base class, og la spesifikke feil arve fra den. Da kan én handler dekke hele feilfamilien.
class ApiError(Exception):
passVelg fornuftige standardverdier
Gi basen en standardverdi for status_code, for eksempel 400. Subklasser overstyrer den bare når de trenger en annen verdi.
class ApiError(Exception):
status_code = 400Hold logikken ute av views
Ved å utløse domenefeil kan viewene holdes korte. handler har ansvar for formateringen, slik at hver view bare signaliserer hva som gikk galt.
Hvorfor dette skalerer
Når en app vokser, holder egendefinerte exceptions feillogikken samlet på ett ryddig sted. Nye error types kan kobles til den samme rene behandlingsflyten.
Kort kontroll
Hvordan utløser en view domenefeilen Deres?
Oppsummering
De har bygget custom exception-klasser med statuskode og melding, utløst dem i views og koblet dem til ryddig JSON. Imponerende!
Lær deg Python med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 30
- Leksjoner
- 120
Ofte stilte spørsmål
Er leksjonen «Kast egendefinerte exception-klasser» gratis?
Ja – hele teksten i «Kast egendefinerte exception-klasser» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Flask Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Flask Academy inneholder totalt 4 leksjoner.
Hva lærer jeg i «Kast egendefinerte exception-klasser»?
Definer domenefeil som kan mappes til JSON. Du øver på Flask Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Flask Academy?
Ingen tidligere erfaring er nødvendig. Flask Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 4.
Hvor lang tid tar leksjonen «Kast egendefinerte exception-klasser»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Flask Academy-leksjonen?
Ja. Alle Flask Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- abort og HTTP-feilkoder
- Registrer errorhandler-funksjoner
- Kast egendefinerte exception-klasser
- Ensartede JSON-feilkonvolutter