- 04/01/2019
- 6 minuutin lukea
-
- S
- s
- c
LYHYT KUVAUS
Kuvaa, miten käyttää Try
, Catch
ja Finally
lohkojen handleterminating virheitä.,
PITKÄ KUVAUS
Käyttö Try
, Catch
ja Finally
lohkojen vastaamaan tai kahva terminatingerrors skriptejä. Trap
– lausahduksella voidaan käsitellä myös terminaatiovirheitä skripteissä. Lisätietoja on saatavissa seuraavasta osoitteesta: about_Trap.
päättymisvirhe estää lausuman juoksemisen. Jos PowerShell ei tee päättymisvirhettä jollain tavalla, PowerShell lopettaa myös toiminnon tai komentosarjan suorittamisen nykyisen putken avulla., Muilla kielillä, kuten C#,päättymisvirheistä käytetään nimitystä poikkeukset.
Käyttö Try
lohko määritellä osa skripti, joka wantPowerShell seurata virheitä. Kun virhe tapahtuu sisällä Try
lohko,virhe on ensin tallennettu $Error
automaattinen muuttuja. PowerShell thensearches varten Catch
lohko käsitellä virhe., Jos Try
selvitys doesnot on matching Catch
lohko, PowerShell edelleen etsiä tarkoituksenmukainen Catch
estä tai Trap
julkilausuman ylätason vaikutusalueet. KunCatch
lohko on valmistunut tai, jos ei ole asianmukaisia Catch
estä tai Trap
lausunto on löytynyt, Finally
lohko on ajaa. Jos virhettä ei voida käsitellä,virhe kirjoitetaan virhevirtaan.,
Catch
lohko voi sisältää komentoja seuranta virhe tai recoveringthe lämpötila virtaus käsikirjoituksen. Catch
lohko voi määrittää, mikä virhe latoo saaliit. Try
ilmoitus voi sisältää useita Catch
lohkojen differentkinds virheitä.
a Finally
block voidaan käyttää vapauttamaan kaikki resurssit, joita ei enää tarvita käsikirjoituksessasi.,
Try
, Catch
, and Finally
resemble the Try
, Catch
, and Finally
keywords used in the C# programming language.
SYNTAX
A Try
statement contains a Try
block, zero or more Catch
blocks, and zeroor one Finally
block. A Try
statement must have at least one Catch
blockor one Finally
block.,
seuraavassa esitetään Try
lohko syntaksi:
try {<statement list>}
Try
avainsana seuraa statement list olkaimet. Jos terminatingerror tapahtuu, kun lausunnot lausunto luettelo ajetaan, thescript kulkee virhe objektin Try
lohkon asianmukainen Catch
lohko.
seuraavassa esitetään Catch
lohko syntaksi:
catch *] {<statement list>}
Virhe tyypit näkyvät suluissa., Uloimmat sulut osoittavat alkuaineen isoptionaaliseksi.
Catch
avainsana, jota seuraa valinnainen luettelo virhe typespecifications ja selvitys-luettelosta. Jos päättämisestä virheTry
lohko, PowerShell etsii asianmukainen Catch
lohko. Ifone löytyy, Catch
– lohkon lausumat toteutetaan.
Catch
lohko voi määrittää yhden tai useamman virhetyypin. Virhetyyppi on aMicrosoft .NET Framework-poikkeus tai poikkeus, joka on johdettu A: sta.,Verkkokehyksen poikkeus. A Catch
block käsittelee eriteltyjen virheitä .Nettokehyksen poikkeusluokka tai mihin tahansa tiettyyn luokkaan kuuluva luokka.
– Jos Catch
lohko määrittelee virheen tyypin, että Catch
lohko käsittelee thattype virhe. Jos a Catch
lohko ei määritä virheen tyyppi, että Catch
lohko käsittelee kaikki tapahtui virhe Try
lohko., Try
selvitys caninclude useita Catch
lohkot eri määritetty virhe tyypit.
seuraavassa esitetään Finally
lohko syntaksi:
finally {<statement list>}
Finally
avainsana seuraa statement list, joka toimii joka kerta thescript on ajaa, vaikka Try
selvitys juoksi ilman virhe tai virhe wascaught show Catch
lausunto.
huomaa, että CTRL+C: n painaminen pysäyttää putken., Putkistoon lähetettyjä objekteja ei näytetä ulostulona. Siksi, jos mainittava, näytetään, kuten ”Vihdoin lohko on ajaa”, se ei tule näkyviin, kun painat CTRL+C, vaikkaFinally
lohko juoksi.
KIINNI VIRHEITÄ
seuraava näyte script näyttää Try
lohko a Catch
lohko:
try { NonsenseString }catch { "An error occurred." }
Catch
avainsana on välittömästi seuraa Try
estä tai toisella Catch
lohko.,
PowerShell ei tunnista ”NonsenseString”, kuten cmdlet-komento tai muu kohde.Käynnissä tämä skripti palauttaa seuraavan tuloksen:
An error occurred.
Kun käsikirjoitus kohtaamisia ”NonsenseString”, se aiheuttaa päättämisestä virhe. Catch
block käsittelee virheen ajamalla lausumaluettelon lohkon sisällä.
KÄYTTÄMÄLLÄ USEITA CATCH LAUSUNNOT
Try
lausunto voi olla mikä tahansa määrä Catch
lohkot., Esimerkiksi seuraava kirjoitus on Try
lohko lataukset MyDoc.doc
, ja se containstwo Catch
lohkot:
ensimmäinen Catch
lohko käsittelee virheitä Järjestelmän.Net.WebException andSystem.IO.IOException tyypit. Toinen Catch
– lohko ei määrittele anerror-tyyppiä. Toinen Catch
lohko käsittelee muita päättämisestä virheet thatoccur.
PowerShell vastaa Error types by perintö. Catch
lohko käsittelee errorsof määritelty .,Nettokehyspoikkeusluokka tai mikä tahansa luokasta, joka on johdettu määritellystä luokasta. Seuraava esimerkki sisältää Catch
lohko thatcatches ”Komento Ei Löydy” virhe:
catch {"Inherited Exception" }
määritetty virhe tyyppi, CommandNotFoundException, perii järjestelmää.SystemException tyyppi. Seuraava esimerkki myös saaliit CommandNot Löytynyt virhe:
catch {"Base Exception" }
Tämä Catch
lohko käsittelee ”- Komento Ei Löydy” virhe ja muita virheitä thatinherit päässä SystemException tyyppi.,
Jos et määritä virheen luokan ja yksi sen johdetut luokat, aseta Catch
lohko johdettu luokka ennen Catch
lohkon yleisen luokan.
Käyttämällä Ansoja Yrittää Kiinni
Kun päättämisestä virhe esiintyy Try
lohko a Trap
määritellään liikkuvalla Try
lohko, vaikka on matching Catch
lohko, Trap
statementtakes ohjaus.,
– Jos Trap
on olemassa korkeampi lohko kuin Try
, ja siellä ei ole vastaaviaCatch
lohkon sisällä nykyinen laajuus, Trap
hallita, jopa jos vanhempi laajuus on matching Catch
lohko.
ACCESSING OTTAMATTA TIETOJA
Sisällä Catch
lohko, nykyinen virhe voidaan käyttää $_
, joka tunnetaan myös nimellä $PSItem
. Kohde on tyypiltään ErrorRecord.,
try { NonsenseString }catch { Write-Host "An error occurred:" Write-Host $_}
Käynnissä tämä skripti palauttaa seuraavan tuloksen:
An Error occurred:The term 'NonsenseString' is not recognized as the name of a cmdlet, function,script file, or operable program. Check the spelling of the name, or if a pathwas included, verify that the path is correct and try again.
On olemassa muita ominaisuuksia, joita voidaan käyttää, kuten ScriptStackTrace,Poikkeus, ja ErrorDetails. Esimerkiksi, jos haluamme muuttaa käsikirjoituksen seuraaviin:
try { NonsenseString }catch { Write-Host "An error occurred:" Write-Host $_.ScriptStackTrace}
– tulos on samanlainen:
An Error occurred:at <ScriptBlock>, <No file>: line 2
VAPAUTTAA RESURSSEJA KÄYTTÄMÄLLÄ LOPUKSI
vapauttaa resursseja käyttää käsikirjoituksen, lisää Finally
lohkon jälkeen Try
jaCatch
lohkot., Finally
lohko lausunnot suorita riippumatta siitä, onkoTry
lohko kohtaa päättämisestä virhe. PowerShell toimii Finally
blockbefore käsikirjoitus päättyy, tai ennen kuin nykyinen lohko menee ulos soveltamisala.
a Finally
block kulkee, vaikka käyttäisit CTRL+C: tä pysäyttääksesi thescriptin. Finally
lohko toimii myös, jos Poistumisen avainsanan pysäyttää käsikirjoitus fromwithin Catch
lohko.,
KATSO MYÖS
about_Break
about_Continue
about_Scopes
about_Throw
about_Trap
Vastaa