• 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 Traplausunto 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 Finallykeywords 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 Catchlohko.

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ä Catchlohko 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 Catchlohko.,

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 Catchlohko 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