• 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 Traperklæ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 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 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 Catchblock.

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 Catchblock angiver en fejltype, at Catch block håndterer denne type fejl. Hvis en Catch block ikke angiver en fejltype, håndterer denne Catchblock 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 Catchbloker.,

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