Try / catch med rescue och always
Återhämta Er smidigt från fel
Try / catch med rescue och always är en gratis lektion i DevOps-bootcamp på CoddyKit. Detta är lektion 2 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för DevOps-bootcamp, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i DevOps-bootcamp innehåller totalt 4 lektioner.
Block får ett säkerhetsnät
Kombinera ett block med rescue och always för att få try, catch och finally för era uppgifter. Fel blir möjliga att återhämta sig från. 🛟
rescue-sektionen
Om någon uppgift i blocket misslyckas hoppar Ansible till rescue och kör dessa uppgifter i stället, ungefär som en catch-sats.
- block:
- ansible.builtin.command: /opt/risky-step
rescue:
- ansible.builtin.debug:
msg: "Step failed, recovering"always körs oavsett vad som händer
Sektionen always körs oavsett om blocket lyckades eller misslyckades, vilket passar perfekt för rensning, till exempel att ta bort en temporär fil.
- block:
- ansible.builtin.command: /opt/deploy
always:
- ansible.builtin.file:
path: /tmp/lock
state: absentAlla tre tillsammans
Använd block, rescue och always som en enda struktur: försök utföra arbetet, fånga fel och avsluta sedan alltid på ett rent sätt.
- block:
- ansible.builtin.command: /opt/deploy
rescue:
- ansible.builtin.debug:
msg: "Rolling back"
always:
- ansible.builtin.debug:
msg: "Done either way"rescue återställer felstatusen
Om rescue slutförs utan fel är värden inte längre markerad som misslyckad. Playen fortsätter som om blocket hade lyckats.
Körningsordning
Uppgifterna i blocket körs först. Vid fel hoppas resten av blocket över och rescue startar. always körs sist i alla fall.
När rescue själv misslyckas
Om en uppgift i rescue också misslyckas markeras värden som misslyckad, men always körs fortfarande innan playen stoppas för den värden.
Granska felet
Inuti rescue kan ni läsa ansible_failed_task och ansible_failed_result för att se vilken uppgift som gick sönder och varför.
- rescue:
- ansible.builtin.debug:
msg: "Failed task was {{ ansible_failed_task.name }}"Ett verkligt användningsfall: återställning
Det klassiska mönstret är att placera deploy i block, ångra ändringen i rescue och starta om eller låsa upp i always. Ren återställning vid varje körning.
Inte bara döljande av fel
rescue är till för återställning på ett kontrollerat sätt, inte för att tysta fel. Logga felet och återställ tillståndet; låtsas inte att inget gick fel. ⚠️
Utan rescue blir det ett hårt stopp
Utan en rescue-sektion beter sig ett misslyckat block som vilken misslyckad uppgift som helst: det stoppar playen för den värden direkt.
Snabb kontroll
Låt oss bekräfta hur always fungerar.
Sammanfattning
rescue fångar fel i block och återställer värden, medan always körs varje gång för rensning. Try, catch, finally för Ansible. ✅
Lär dig DevOps-bootcamp 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
- 142
- Lektioner
- 568
Vanliga frågor
Är lektionen ”Try / catch med rescue och always” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen DevOps-bootcamp, inklusive ”Try / catch med rescue och always”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i DevOps-bootcamp innehåller totalt 4 lektioner.
Vad lär jag mig i ”Try / catch med rescue och always”?
Återhämta Er smidigt från fel Ni övar på DevOps-bootcamp 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 DevOps-bootcamp?
Du behöver inga förkunskaper. Utbildningen i DevOps-bootcamp 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 2 av 4.
Hur lång tid tar lektionen ”Try / catch med rescue och always”?
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 DevOps-bootcamp-lektionen?
Ja. Varje DevOps-bootcamp-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
- Gruppera uppgifter med block
- Try / catch med rescue och always
- Styr fel: failed_when och ignore_errors
- Anpassade assertioner med modulen fail