• 04/01/2019
  • 6 minutter på å lese
    • S
    • s
    • c

KORT BESKRIVELSE

Beskriver hvordan du bruker Try, Catch, og Finally blokker for å handleterminating feil.,

LANG BESKRIVELSE

Bruk Try, Catch, og Finally blokker for å svare på eller håndtere terminatingerrors i skript. Trap uttalelsen kan også brukes til å håndtere terminatingerrors i skript. For mer informasjon, se about_Trap.

En avslutning feil stopper en uttalelse fra å kjøre. Hvis PowerShell gjør nothandle en avslutning av feil på noen måte, PowerShell også slutter å kjøre thefunction eller skript ved hjelp av den gjeldende rørledning., I andre språk, for eksempel C#,avslutte feil er referert til som unntak.

for Try blokker for å definere en del av et skript som du wantPowerShell for å kontrollere for feil. Når det oppstår en feil i Try blokker,feilen er først lagret til $Error automatisk variabel. PowerShell thensearches for en Catch blokker for å håndtere feil., Hvis Try uttalelse doesnot har en matchende Catch blokker, PowerShell fortsetter å søke etter anappropriate Catch blokker eller Trap uttalelse i den overordnede nivåer. Etter enCatch blokker er fullført, eller hvis det ikke finnes passende Catch blokker eller Traperklæringen, Finally blokker er kjørt. Hvis feilen ikke kan behandles,feilen er skrevet til feil strøm.,

En Catch blokk kan inneholde kommandoer for sporing av feil eller for recoveringthe forventet flyt av skriptet. En Catch blokker kan angi hvilke feil typesit fangster. En Try uttalelse kan inneholde flere Catch blokker for differentkinds av feil.

En Finally blokker kan brukes til å frigjøre ressurser som ikke lenger er neededby skriptet.,

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

følgende viser Try blokker syntaks:

try {<statement list>}

Try søkeord er etterfulgt av en uttalelse liste i bukseseler. Hvis en terminatingerror oppstår mens uttalelser i uttalelsen listen blir kjøre, thescript passerer feil objekt fra Try blokker til en passende Catchblokker.

følgende viser Catch blokker syntaks:

catch *] {<statement list>}

Feil typer vises i parentes., Den ytterste parentes angir element isoptional.

Catch søkeord er etterfulgt av en valgfri liste over feil typespecifications og en uttalelse listen. Hvis en avslutning feil oppstår iTry blokker, PowerShell søker etter en passende Catch blokker. Ifone er funnet, uttalelser i Catch blokken blir utført.

Catch blokker kan du angi ett eller flere typer feil. En feil skriver er aMicrosoft .NET Framework unntak eller et unntak som er avledet fra en .,NETFramework unntak. En Catch blokker håndterer feil i de angitte .NETFramework unntak klasse eller av enhver klasse som stammer fra specifiedclass.

Hvis en Catch blokker angir en feil type, som Catch blokker håndterer thattype av feil. Hvis en Catch blokker ikke angi et feil type, som Catchblokker håndterer eventuelle feil som er oppstått i Try blokker., En Try uttalelse caninclude flere Catch blokker til ulike spesifiserte typer feil.

følgende viser Finally blokker syntaks:

finally {<statement list>}

Finally søkeord er etterfulgt av en uttalelse liste som kjøres hver gang thescript er kjørt, selv om Try uttalelse løp uten feil eller feil wascaught i en Catch uttalelse.

Merk at hvis du trykker CTRL+C stopper rørledningen., Objectsthat er sendt til rørledningen vil ikke bli vist som output. Derfor, ifyou inneholde en erklæring skal vises, for eksempel «Endelig blokk har kjørt», itwill ikke vises når du trykker på CTRL+C, selv omFinally blokker løp.

FANGE FEIL

følgende eksempel skript viser en Try blokker med en Catch blokker:

try { NonsenseString }catch { "An error occurred." }

Catch søkeord, må umiddelbart følg Try blokker eller annen Catchblokker.,

PowerShell gjenkjenner ikke «NonsenseString» som en cmdlet eller andre element.Kjører du dette skriptet gir følgende resultat:

An error occurred.

Når skriptet møter «NonsenseString», det fører til en avslutning feil. Catch blokker håndterer feilen ved å kjøre uttalelse liste inne i blokken.

ved HJELP av FLERE FANGE UTTALELSER

En Try uttalelse kan ha et ubegrenset antall Catch blokker., For eksempel, thefollowing skriptet har en Try blokker som laster ned MyDoc.doc, og det containstwo Catch blokker:

første Catch blokker håndterer feil i Systemet.Net.WebException andSystem.IO.IOException typer. Den andre Catch blokker ikke angi anerror type. Den andre Catch blokker håndterer alle andre avslutte feil thatoccur.

PowerShell kamper feil typer av arv. En Catch blokker håndterer errorsof angitt .,NET Framework unntak klasse eller av enhver klasse som derivesfrom den angitte klassen. Følgende eksempel inneholder en Catch blokker thatcatches en «Kommando Ikke Funnet» – feil:

catch {"Inherited Exception" }

Den angitte feil type, CommandNotFoundException, arver fra theSystem.SystemException type. Følgende eksempel også fanger en CommandNot Funnet feil:

catch {"Base Exception" }

Denne Catch blokker håndterer «Kommando Ikke Funnet» – feil og andre feil thatinherit fra SystemException type.,

Hvis du angir en feil klasse, og en av dens avledede klasser, sted Catchblokker for avledet klasse før Catch blokker for den generelle klassen.

ved Hjelp av Feller i en Prøve å Fange

Når en oppsigelse feil oppstår i en Try blokker med en Trap definert withinthe Try kvartal, selv om det ikke er en samsvarende Catch blokker, Trap statementtakes kontroll.,

Hvis en Trap eksisterer på et høyere blokkere enn Try, og det er ingen matchendeCatch blokk i dagens omfang, Trap vil ta kontroll, selv ifany overordnede omfang har en matchende Catch blokker.

få TILGANG til UNNTAK INFORMASJON

Innenfor en Catch blokker, gjeldende feil kan nås ved hjelp av $_, whichis også kjent som $PSItem. Objektet er av type ErrorRecord.,

try { NonsenseString }catch { Write-Host "An error occurred:" Write-Host $_}

Kjører du dette skriptet gir følgende resultat:

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.

Det er flere egenskaper som kan nås, for eksempel ScriptStackTrace,Unntak, og ErrorDetails. For eksempel, hvis vi vil endre skript for å thefollowing:

try { NonsenseString }catch { Write-Host "An error occurred:" Write-Host $_.ScriptStackTrace}

resultatet vil være lik:

An Error occurred:at <ScriptBlock>, <No file>: line 2

FRIGJØRE RESSURSER VED HJELP av ENDELIG

for Å frigjøre ressurser som brukes av et skript, legge til en Finally blokker etter Try ogCatch blokker., Finally blokker uttalelser kjøre uavhengig av omTry blokker møter en avslutning feil. PowerShell går Finally blockbefore skriptet avsluttes eller før den aktuelle blokken går ut av omfang.

En Finally blokker kjører selv om du bruker CTRL+C for å stoppe thescript. En Finally blokker driver også hvis en Exit søkeord stopper script fromwithin en Catch blokker.,

SE OGSÅ:

about_Break

about_Continue

about_Scopes

about_Throw

about_Trap