heeft u ooit een toepassing crash gezien? Als dat zo is, weet je hoe frustrerend het kan worden en als je een programmeur, je zult waarschijnlijk vervloeken de ontwikkelaar voor het niet in de juiste foutafhandeling mechanisme in het! En dat is precies waar dit stuk over gaat. Foutafhandeling is een integraal onderdeel van de code van een applicatie omdat het onvoorziene fouten vangt en ervoor zorgt dat de applicatie veilig wordt beëindigd., Zoals met de meeste programmeertalen, ondersteunt PowerShell ook een foutafhandelingsmechanisme genaamd try-catch, maar laten we eerst wat leren over foutafhandeling in PowerShell.
Waarom hebt u foutafhandeling nodig?
een vrij eenvoudige vraag die de meesten van jullie misschien al kennen. Toch, laten we kort ingaan op een aantal belangrijke punten te herhalen.
foutafhandeling helpt op de volgende manieren.
- voorkomt dat een toepassing crasht.
- maakt het gemakkelijk voor de gebruiker om te weten dat er iets mis is en dat ze contact moeten opnemen met het ondersteuningsteam.,
- geeft details over de fout en de mogelijke oorzaken.
- helpt bij verdere analyse en om de problemen op te lossen.
- geeft de optie om de foutmeldingen die naar eindgebruikers worden verzonden aan te passen.
- maakt het gemakkelijk om je code te onderhouden.
- uw programma kan blijven werken, zelfs na de fout, afhankelijk van de fout en uw code.
- wordt beschouwd als een goede programmeerpraktijk.
nu we de voordelen van foutafhandeling hebben besproken, laten we eens kijken hoe het in PowerShell kan worden geïmplementeerd.,
foutafhandeling in PowerShell
grosso modo zijn er twee soorten fouten: terminating en non-terminating fouten.
Terminating and non-terminating errors
zoals de naam al doet vermoeden, zijn terminating errors die kritisch zijn en het programma abrupt beëindigen, terwijl niet-terminating errors het programma toestaan om te draaien, maar de verkeerde uitvoer of soms zelfs drastische resultaten kunnen geven. Als je je nu afvraagt, niet-beëindigende fouten zijn potentieel gevaarlijker dan het beëindigen van fouten, omdat je niet weet welke aspecten kunnen worden gewijzigd.,
sommige mogelijke beëindigingsfouten zijn geheugen-en syntaxisfouten, terwijl het grootste deel van de fouten in de programmeerlogica en onverwachte fouten in de niet-beëindigingscategorie vallen.
het omzetten van niet-beëindigende fouten naar beëindigende fouten
als een programmeur, kunt u PowerShell vertellen om de niet-beëindigende fouten als beëindigende fouten te behandelen, zodat het programma stopt als het die specifieke fout tegenkomt. Deze wijziging helpt u om de fout te verwerken met het PowerShell try-catch-blok omdat standaard niet-beëindigende fouten niet kunnen worden behandeld met het try-catch-blok.,
om niet-eindigende fouten om te zetten in eindigende fouten, gebruik een parameter genaamd ErrorAction. Elke cmdlet ondersteunt deze parameter en het is ontworpen om het programma te vertellen welke actie het moet nemen wanneer het een fout tegenkomt. ErrorAction wordt geleverd met de volgende opties
- Stop: dit stopt het programma en behandelt het als een beëindigingsfout.
- Doorgaan: Hiermee kan het programma doorgaan en wordt de fout weergegeven.
- SilentlyContinue: het programma wordt uitgevoerd en er worden geen fouten weergegeven.
- negeren: negeert de fout en gaat verder.,
- Inquire: toont de fout en controleert of deze moet doorgaan.
- onderbreken: dit kan worden gebruikt in een Windows PowerShell-workflow. De beperking is dat het geavanceerde functies niet kan opschorten.
de syntaxis voor ErrorAction is:
$variable = Get:content \user.txt:ErrorAction Stop
Dit commando verandert een niet-beëindigende fout in een beëindigende, zodat u het kunt afhandelen.
bouwen van een try-catch block
zodra u een beëindigingsfout hebt of een niet-beëindigingsfout hebt geconverteerd naar een beëindigingsfout, kunt u dit afhandelen met PowerShell try-catch block.,
de algemene syntaxis is:
in dit voorbeeld worden gegevens uit het bestand opgeslagen in $variabele en als er een fout is, krijgt de code het vangblok en toont het bericht. Het bovenstaande voorbeeld is een basisvoorbeeld, ontworpen om je een idee te geven van de syntaxis en het gebruik. In de echte wereld zal je dit PowerShell try-catch blok gebruiken om inzicht te krijgen over de fout en dienovereenkomstig actie te ondernemen.,
praktische toepassingen van PowerShell try-catch block
u kunt toegang krijgen tot de foutrecord in het catch block. In feite wordt de foutmelding opgeslagen in de huidige variabele $_. U kunt alles doen met deze foutrecord, zoals het ontleden van de fout, een waarschuwing weergeven, en meer. Een krachtig attribuut van de huidige variabele is de uitzondering omdat het idee is om meer te weten over de onverwachte gebeurtenissen die ervoor zorgden dat het programma stopte. Ook, uitzondering zelf komt met vele attributen zoals ItemName, GetType, bericht, enz.,,
bijvoorbeeld:
try{$variable = Get:content \user.txt:ErrorAction Stop}catch{write:output $_Exception.Message}
nu de basis duidelijk is, gaan we naar het geavanceerde deel.
u kunt het catch block gebruiken om specifieke uitzonderingen te vangen, mits u ze kent of anticipeert. Bijvoorbeeld, laten we zeggen dat u een specifiek bericht wilt weergeven als het bestand niet wordt gevonden en andere berichten voor andere uitzonderingen, uw code zou er als volgt uit moeten zien:
enkele punten om rekening mee te houden bij het gebruik van try-catch
Houd rekening met de volgende punten tijdens het gebruik van het PowerShell try-catch-blok.,
- Er moet geen code zijn tussen de afsluitende accolades van het try-blok en het catch-Commando. Met andere woorden, het woord “catch” zou onmiddellijk in de volgende regel moeten staan na de sluithaakjes van het try block
- dit PowerShell try-catch block is het nuttigst om fouten te verwerken waarvan je verwacht dat ze in het programma kunnen gebeuren.
- het catch block zal elke uitzondering vangen die in het try block wordt gegooid, ongeacht de oorsprong ervan.
- PowerShell try-catch commando is een handig alternatief voor meerdere if statements.,
- Het try block kan worden gevolgd door een willekeurig aantal catch blocks, maar deze moeten opeenvolgend zijn met geen andere code ertussen.
eindelijk block
Er is iets genaamd een eindelijk block dat u kunt gebruiken met try-catch. Dit is een optionele en hoeft niet te worden gebruikt te allen tijde. Dit blok zal de daarin genoemde code uitvoeren, ongeacht of er een fout was of niet. Dit blok moet direct na de sluitbeugels van het laatste vangblok komen.,
bijvoorbeeld:
in het bovenstaande voorbeeld wordt elke keer dat een poging wordt gedaan om toegang te krijgen tot het bestand, een item toegevoegd in het logbestand, ongeacht of het bestand al dan niet is gevonden.
Try-catch: probeer het uit en vermijd crashes
foutafhandeling is een belangrijk onderdeel van elk programma omdat het voorkomt dat de toepassing crasht en U helpt om de mogelijke oorzaak van de fout te analyseren. PowerShell try-catch block is een krachtige manier om afsluitfouten vast te leggen, zodat u ze veilig kunt verwerken zonder een crash te veroorzaken., Het helpt met de gedetailleerde analyse en een begrip van het probleem ook. Om deze redenen is het een must-have in je PowerShell scripts.
Leave a Reply