PowerShell:
Fouten afhandelen
Hoe te:
# Basis Try-Catch om uitzonderingen te behandelen
try {
# Code die een fout kan veroorzaken
$resultaat = 1 / 0
} catch {
# Wat te doen als er een fout optrad
Write-Host "Oeps, er is een fout opgetreden: $_"
}
# Een aangepast foutbericht uitgeven
try {
Get-Item "nietbestaandbestand.txt" -ErrorAction Stop
} catch {
Write-Host "Het bestand kon niet worden gevonden."
}
# De $Error variabele gebruiken om de laatste fout te inspecteren
Diepere Duik
PowerShell heeft een lange weg afgelegd sinds het begin als Monad. Foutafhandeling werd mettertijd robuuster en biedt nu mogelijkheden vergelijkbaar met andere programmeertalen. De try-catch-finally
syntax is zo’n kruisbestuiving van talen zoals C#. Voordat dit beschikbaar was, verlieten scripters zich sterk op het controleren van voorwaarden en gebruikten de $Error
automatische variabele.
PowerShell heeft ook twee hoofdtypen van fouten: terminerende en niet-terminerende. Terminerende fouten zullen het script stoppen tenzij gevangen in een try-catch
blok, terwijl niet-terminerende dat niet zullen doen tenzij je -ErrorAction Stop
specificeert. Dit onderscheid is cruciaal omdat het fijne controle over foutafhandeling toestaat, beslissend of een fout echt de stopzetting van het hele script rechtvaardigt of simpelweg gelogd en genegeerd kan worden.
PowerShell’s foutafhandeling staat ook toe voor een finally
blok, dat loopt maakt niet uit wat - of er nu een fout optrad of niet. Het is geweldig voor opruimtaken.
Wanneer je diep in de scripting loopgraven zit, kun je ook specifieke uitzonderingstypen afhandelen, wat je nog fijnere controle geeft.
Als alternatief is er de oude school -ErrorVariable
parameter om fouten te vangen zonder een uitzondering te gooien. En de $?
variabele vertelt je of de laatste operatie succesvol was. Ze zijn handige tools, al zijn ze iets minder netjes dan een solide try-catch
.