- 04/01/2019
- 6 minutter på at læse
-
- S
- s
- c
en KORT BESKRIVELSE
Beskriver, hvordan man bruger Try
Catch
og Finally
blocks for at handleterminating fejl.,
LANG BESKRIVELSE
Brug Try
Catch
og Finally
blocks for at imødegå eller håndtere terminatingerrors i scripts. Sætningen Trap
kan også bruges til at håndtere terminatingerrors i scripts. For mere information, se about_Trap.
en afslutningsfejl stopper en erklæring fra at køre. Hvis Po .ershell ikke håndterer en afslutningsfejl på en eller anden måde, stopper Po .ershell også med at køre funktionen eller scriptet ved hjælp af den aktuelle rørledning., På andre sprog, såsom C#,kaldes afslutningsfejl som undtagelser.
brugTry
block til at definere et afsnit af et script, hvor du Vilpo .ershell at overvåge for fejl. Når der opstår en fejl i Try
– blokken, gemmes fejlen først i $Error
automatisk variabel. Po .ershell thensearches for en Catch
blok for at håndtere fejlen., Hvis Try
erklæring doesnot har en matchende Catch
bloker, PowerShell fortsætter med at søge efter anappropriate Catch
bloker eller Trap
erklæring i den overordnede anvendelsesområder. Efter enCatch
blok er afsluttet eller, hvis ikke relevant Catch
bloker eller Trap
erklæring er fundet, Finally
bloker er kørt. Hvis fejlen ikke kan håndteres, skrives fejlen til fejlstrømmen.,
A Catch
block kan indeholde kommandoer til sporing af fejlen eller til gendannelseden forventede strøm af scriptet. A Catch
block kan angive, hvilke fejl typesit fangster. Try
erklæring kan indeholde flere Catch
blocks for differentkinds af fejl.
A Finally
block kan bruges til at frigøre ressourcer, der ikke længere er brug for dit script.,
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
bloker syntax:
try {<statement list>}
Try
søgeord er efterfulgt af en erklæring liste i seler. Hvis der opstår en terminatingerror, mens udsagnene i udsagnslisten køres, passerer thescript fejlobjektet fra Try
block til en passende Catch
block.
følgende viser Catch
bloker syntax:
catch *] {<statement list>}
Fejl typer vises i parentes., De yderste beslag angiver elementet ervalgfri.
Catch
søgeord efterfølges af en valgfri liste over fejltypespecifikationer og en sætningsliste. Hvis en afslutning fejl opstår iTry
bloker, PowerShell søger efter en passende Catch
bloker. Ifone findes, udføres udsagnene iCatch
blokken.
Catch
blokken kan angive en eller flere fejltyper. En fejltype er amicrosoft .net Frame .ork undtagelse eller en undtagelse, der er afledt af en.,NETFramework undtagelse. ACatch
block håndterer fejl af den angivne .Netframe .ork undtagelsesklasse eller af enhver klasse, der stammer fra den angivneklasse.
Hvis en Catch
block angiver en fejltype, at Catch
block håndterer denne type fejl. Hvis en Catch
block ikke angiver en fejltype, håndterer denne Catch
block enhver fejl, der opstår i Try
block., A Try
erklæring kan inkludere flere Catch
blokke for de forskellige specificerede fejltyper.
følgende viser Finally
bloker syntax:
finally {<statement list>}
Finally
søgeord er fulgt op af en erklæring liste, der kører hver gang thescript er kørt, selv hvis Try
erklæring løb uden fejl eller en fejl wascaught i en Catch
erklæring.
Bemærk, at tryk på CTRL+C stopper rørledningen., Objekterder sendes til rørledningen, vises ikke som output. Derfor, hvisdu inkluderer en erklæring, der skal vises, såsom “endelig blok har kørt”, detvil ikke blive vist, når du har trykket på CTRL+C, selvomFinally
blok løb.
at FANGE FEJL
følgende script viser en Try
bloker med en Catch
blok:
try { NonsenseString }catch { "An error occurred." }
Catch
søgeord skal følge umiddelbart efter Try
bloker eller anden Catch
bloker.,
Po .ershell genkender ikke “NonsenseString” som en cmdlet eller et andet element.Kører dette script returnerer følgende resultat:
An error occurred.
Når scriptet møder “NonsenseString”, det forårsager en afslutning fejl. Catch
block håndterer fejlen ved at køre sætningslisten inde i blokken.
ved HJÆLP af FLERE CATCH-SÆTNINGER
Try
erklæring kan have et vilkårligt antal Catch
blokke., For eksempel, denfølgende script har en Try
bloker for at downloads MyDoc.doc
, og det containstwo Catch
blokke:
første Catch
bloker håndterer fejl i Systemet.Netto.WebException andSystem.IO.IOException typer. Den anden Catch
blok angiver ikke anerror type. Den anden Catch
block håndterer andre afslutningsfejl, der opstår.
Po .ershell matcher fejltyper ved arv. A Catch
block håndterer fejlaf det angivne .,Net Frame .ork undtagelse klasse eller af enhver klasse, der aflederfra den angivne klasse. Følgende eksempel indeholder et Catch
bloker thatcatches en “Command Not Found” fejl:
catch {"Inherited Exception" }
Den angivne type fejl, CommandNotFoundException, arver fra theSystem.Systeme .ception type. Følgende eksempel også fanger en CommandNot Fundet fejl:
catch {"Base Exception" }
Denne Catch
bloker håndterer “Kommandoen blev Ikke Fundet” – fejl og andre fejl thatinherit fra SystemException type.,
Hvis du angiver en fejl klasse, og en af dens afledte klasser, læg Catch
bloker for den afledte klasse, før Catch
bloker for den almindelige klasse.
Brug af Fælder i en Prøve Fange
Når en afslutning fejl opstår i en Try
bloker med en Trap
, der er defineret inden forkildeni Try
blok, selv om der er en tilsvarende Catch
blok, Trap
statementtakes kontrol.,
Hvis Trap
eksisterer på et højere blok end den Try
, og der er ingen matchendeCatch
bloker for inden for det nuværende anvendelsesområde Trap
vil tage kontrol, selv hvis alle forældre rækkevidde har en matchende Catch
bloker.
få ADGANG UNDTAGELSE INFORMATION
Inden Catch
blok, den aktuelle fejl kan tilgås ved hjælp af $_
, hvilket også kendt som $PSItem
. Objektet er af typen ErrorRecord.,
try { NonsenseString }catch { Write-Host "An error occurred:" Write-Host $_}
Kører dette script returnerer 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.
Der er yderligere egenskaber, der kan tilgås, som ScriptStackTrace,Undtagelse, og ErrorDetails. For eksempel, hvis vi ændrer script til at denfølgende:
try { NonsenseString }catch { Write-Host "An error occurred:" Write-Host $_.ScriptStackTrace}
resultatet vil være det samme som at:
An Error occurred:at <ScriptBlock>, <No file>: line 2
FRIGØRE RESSOURCER VED HJÆLP af ENDELIG
for At frigøre ressourcer, der anvendes af et script, tilføje en Finally
bloker efter Try
ogCatch
blokke., Finally
Bloker sætninger kører uanset omTry
block støder på en afslutningsfejl. Po .ershell kører Finally
blockbefør scriptet afsluttes, eller før den aktuelle blok går ud af rækkevidde.
A Finally
block kører, selvom du bruger CTRL+C til at stoppe thescript. A Finally
block kører også, hvis et e .it-nøgleord stopper scriptet fra inden for en Catch
block.,
SE OGSÅ
about_Break
about_Continue
about_Scopes
about_Throw
about_Trap
Skriv et svar