- 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 Trap
erklæ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 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.,
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 Catch
blokker.
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 Catch
blokker 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 Catch
blokker.,
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 Catch
blokker 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
Legg igjen en kommentar