PowerShell:
Virheiden käsittely
Kuinka:
# Perus Try-Catch poikkeusten käsittelyyn
try {
# Koodi, joka voi laukaista virheen
$result = 1 / 0
} catch {
# Mitä tehdä jos virhe tapahtui
Write-Host "Hups, virhe tapahtui: $_"
}
# Määritellyn virheviestin tulostaminen
try {
Get-Item "olematontiedosto.txt" -ErrorAction Stop
} catch {
Write-Host "Tiedostoa ei löytynyt."
}
# $Error-muuttujan käyttö viimeisimmän virheen tarkasteluun
Syväsukellus
PowerShell on tullut pitkän matkan siitä, kun se tunnettiin Monadina. Virheenkäsittely on kehittynyt ajan myötä, ja se tarjoaa ominaisuuksia, jotka ovat verrattavissa muihin ohjelmointikieliin. Esimerkiksi try-catch-finally
syntaksi on peräisin kielistä kuten C#. Ennen sitä skriptinkirjoittajat nojautuivat vahvasti ehtojen tarkistamiseen ja $Error
-automaattiseen muuttujaan.
PowerShellissa on myös kaksi päätyyppiä virheitä: terminoivat ja ei-terminoivat virheet. Terminoivat virheet pysäyttävät skriptin ellei niitä napatu try-catch
-lohkossa, kun taas ei-terminoivat virheet eivät pysäytä, ellet määritä -ErrorAction Stop
. Tämä ero on ratkaisevan tärkeä, sillä se antaa tarkkaan hallita virheiden käsittelyä, päättäen pidetäänkö virhe tarpeeksi merkittävänä koko skriptin pysäyttämiseksi vai voiko sen vain kirjata ylös ja ohittaa.
PowerShellin virheenkäsittely mahdollistaa myös finally
-lohkon käytön, joka suoritetaan joka tapauksessa - olipa virhettä tai ei. Se on loistava siivoustehtäviin.
Kun olet syvällä skriptien kaivannossa, voit myös käsitellä tiettyjä poikkeustyyppejä, mikä antaa vieläkin hienosyisemmän hallinnan.
Toisaalta on vanhan koulukunnan -ErrorVariable
-parametri, jolla voit kaapata virheet heittämättä poikkeusta. Ja $?
-muuttuja kertoo, oliko viime toiminto onnistunut. Nämä ovat käteviä työkaluja, vaikkakin hieman vähemmän siistejä kuin kunnon try-catch
.