PowerShell:
Feilhåndtering
Hvordan:
# Grunnleggende Try-Catch for å håndtere unntak
try {
# Kode som kan utløse en feil
$result = 1 / 0
} catch {
# Hva gjøre hvis en feil skjedde
Write-Host "Oi, det oppstod en feil: $_"
}
# Skrive ut en egendefinert feilmelding
try {
Get-Item "nonexistentfile.txt" -ErrorAction Stop
} catch {
Write-Host "Filen ble ikke funnet."
}
# Bruker $Error-variabelen for å inspisere den siste feilen
Dypdykk
PowerShell har kommet langt siden starten som Monad. Feilhåndtering ble mer robust over tid, og tilbyr funksjoner lik de i andre programmeringsspråk. try-catch-finally
-syntaksen er ett slikt eksempel på kryssbestøvning fra språk som C#. Før dette, var skriptere sterkt avhengig av å sjekke forhold og å bruke $Error
-automatikkvariabelen.
PowerShell har også to hovedtyper av feil: avsluttende og ikke-avsluttende. Avsluttende feil vil stoppe skriptet med mindre de fanges opp i en try-catch
-blokk, mens ikke-avsluttende feil ikke vil stoppe det med mindre du spesifiserer -ErrorAction Stop
. Denne distinksjonen er avgjørende siden den gir fin kontroll over feilhåndteringen, og bestemmer om en feil virkelig rettferdiggjør å stoppe hele skriptet eller kan rett og slett logges og ignoreres.
PowerShell sin feilhåndtering tillater også en finally
-blokk, som kjører uansett hva - enten en feil oppsto eller ikke. Den er fin for opprydningsoppgaver.
Når du er dypt inne i skriptenes skyttergraver, kan du også håndtere spesifikke unntakstyper, noe som gir deg enda finere kontroll.
Alternativt har du den gamle skolen -ErrorVariable
parameter for å fange opp feil uten å kaste et unntak. Og $?
-variabelen forteller deg om den siste operasjonen var vellykket. De er nyttige verktøy, selv om de kan være litt mindre ryddige enn en solid try-catch
.