har du någonsin sett en programkrasch? Om så är fallet vet du hur frustrerande det kan få och om du är programmerare, kommer du förmodligen att förbanna utvecklaren för att inte sätta in rätt felhanteringsmekanism i den! Och det är precis vad det här stycket handlar om. Felhantering är en integrerad del av en ansökan kod eftersom den fångar oförutsedda fel och säkerställer att ansökan avslutas på ett säkert sätt., Som med de flesta programmeringsspråk stöder PowerShell också en felhanteringsmekanism som heter try-catch, men innan det, låt oss lära oss lite om felhantering i PowerShell.
Varför behöver du felhantering?
en ganska grundläggande fråga som de flesta av er kanske redan vet. Låt oss ändå kort beröra det för att upprepa några viktiga punkter.
felhantering hjälper på följande sätt.
- förhindrar att ett program kraschar.
- gör det enkelt för användaren att veta att något är fel och att de ska kontakta supportteamet.,
- innehåller information om felet och dess möjliga orsaker.
- hjälper till med ytterligare analys och att åtgärda problemen.
- ger möjlighet att anpassa felmeddelandena som skickas till slutanvändare.
- gör det enkelt att underhålla din kod.
- ditt program kan fortsätta att fungera även efter felet, beroende på felet och din kod.
- anses vara en god programplaneringspraxis.
nu när vi har berört fördelarna med felhantering, låt oss se hur det kan implementeras i PowerShell.,
felhantering i PowerShell
i stort sett finns det två typer av fel och de är: avslutande och icke-avslutande fel.
avslutande och icke-avslutande fel
som namnet antyder, avslutande fel är de som är kritiska och avsluta programmet plötsligt medan icke-avslutande fel tillåter programmet att köras men kan ge fel utgång eller ibland, även drastiska resultat. Nu om du undrar Är icke-avslutande fel potentiellt farligare än att avsluta fel eftersom du inte vet vilka aspekter som kan ändras.,
några möjliga avslutande fel är ur minne och syntaxfel medan den stora delen av fel i programmeringslogik och oväntade fel faller i kategorin icke-avslutande.
konvertera icke-avslutande fel till att avsluta fel
som programmerare kan du berätta för PowerShell att behandla de icke-avslutande felen som att avsluta fel, så programmet slutar om det stöter på det speciella felet. Den här ändringen hjälper dig att hantera felet med PowerShell try-catch-blocket eftersom det som standard inte går att avsluta fel kan inte hanteras med try-catch-blocket.,
för att konvertera icke-avslutande fel till att avsluta fel, använd en parameter som heter ErrorAction. Varje cmdlet stöder denna parameter och den är utformad för att berätta för programmet vilken åtgärd det ska ta när det stöter på ett fel. ErrorAction kommer med följande alternativ
- stopp: detta stoppar programmet och behandlar det som ett avslutande fel.
- Fortsätt: tillåter att programmet fortsätter och felet visas.
- Tystfortsätt: programmet körs och inga fel visas.
- ignorera: ignorerar felet och fortsätter.,
- fråga: visar felet och kontrollerar om det ska fortsätta.
- Avbryt: detta kan användas i ett Windows PowerShell-arbetsflöde. Begränsningen är att den inte kan avbryta avancerade funktioner.
syntaxen för ErrorAction är:
$variable = Get:content \user.txt:ErrorAction Stop
det här kommandot ändrar ett icke-avslutande fel till en avslutande, så att du kan hantera det.
bygga en try-catch block
När du har ett avslutande fel eller har konverterat en icke-avslutande en till ett avslutande fel, kan du hantera det med PowerShell try-catch block.,
den generiska syntaxen är:
i det här exemplet lagras data från filen i $ – variabeln och om det finns ett fel kommer koden till fångstblocket och visar meddelandet. Ovanstående exempel är en grundläggande, utformad för att ge dig en uppfattning om syntaxen och användningen. I den verkliga världen kommer du dock att använda detta PowerShell try-catch block för att få insikter om felet och vidta åtgärder i enlighet därmed.,
praktiska tillämpningar av PowerShell try-catch block
Du kan komma åt felposten inuti fångstblocket. Faktum är att felmeddelandet lagras i den aktuella variabeln $_. Du kan göra vad som helst med den här felposten, till exempel tolka felet, visa en varning och mycket mer. Ett kraftfullt attribut för den aktuella variabeln är undantaget eftersom tanken är att veta mer om de oväntade händelserna som orsakade att programmet slutade. Dessutom kommer undantaget i sig med många attribut som ItemName, GetType, Message, etc.,,
till exempel:
try{$variable = Get:content \user.txt:ErrorAction Stop}catch{write:output $_Exception.Message}
nu när grunderna är klara, låt oss flytta till den avancerade delen.
Du kan använda fångstblocket för att fånga specifika undantag, förutsatt att du känner till eller förutser dem. Låt oss till exempel säga att du vill att ett specifikt meddelande ska visas om filen inte hittas och andra meddelanden för andra undantag, ska din kod se ut så här:
några punkter att tänka på när du använder try-catch
tänk på följande punkter när du använder PowerShell try-catch-blocket.,
- Det bör inte finnas någon kod mellan försöksblockets avslutande hängslen och fångstkommandot. Med andra ord, ordet ”catch” bör omedelbart vara i nästa rad efter stängning hängslen försök blocket
- denna PowerShell försök-catch block är mest användbar för att hantera fel som du förutser kan hända i programmet.
- fångstblocket fångar alla undantag som kastas inuti försöksblocket oavsett ursprung.
- PowerShell try-catch-kommandot är ett bekvämt alternativ till flera if-uttalanden.,
- försöksblocket kan följas av valfritt antal fångstblock, men de bör vara i följd utan någon annan kod däremellan.
slutligen blockera
det finns något som kallas en slutligen block som du kan använda med try-catch. Detta är en valfri och behöver inte användas hela tiden. Detta block kommer att utföra koden som nämns inuti den oavsett om det fanns ett fel eller inte. Detta block ska komma strax efter stängningen av det sista fångstblocket.,
till exempel:
i exemplet ovan kommer en post att läggas till i loggfilen varje gång ett försök görs att komma åt filen, oavsett om filen hittades eller inte.
försök-fånga: prova det och avvärja kraschar
felhantering är en viktig del av något program eftersom det förhindrar att programmet kraschar och hjälper dig att analysera den möjliga orsaken till felet. PowerShell try-catch block är ett kraftfullt sätt att fånga avslutande fel, så att du kan hantera dem på ett säkert sätt utan att orsaka en krasch., Det hjälper till med den detaljerade analysen och en förståelse av problemet också. Av dessa skäl är det ett måste i dina PowerShell-skript.
Leave a Reply