Share via


Om Kasta

KORT BESKRIVNING

Beskriver nyckelordet Throw ,som genererar ett avslutande fel.

LÅNG BESKRIVNING

Nyckelordet Throw orsakar ett avslutande fel. Du kan använda nyckelordet Throw för att stoppa bearbetningen av ett kommando, en funktion eller ett skript.

Du kan till exempel använda nyckelordet Throw i skriptblocket i en If-instruktion för att svara på ett villkor eller i Catch-blocket för en Try-Catch-Finally-instruktion. Du kan också använda nyckelordet Throw i en parameterdeklaration för att göra en funktionsparameter obligatorisk.

Nyckelordet Throw kan utlösa valfritt objekt, till exempel en användarmeddelandesträng eller det objekt som orsakade felet.

SYNTAX

Syntaxen för nyckelordet Throw är följande:

throw [<expression>]

Uttrycket i throw-syntaxen är valfritt. När instruktionen Throw inte visas i ett Catch-block och den inte innehåller något uttryck genereras ett ScriptHalted-fel.

C:\PS> throw

ScriptHalted
At line:1 char:6
+ throw <<<<
+ CategoryInfo          : OperationStopped: (:) [], RuntimeException
+ FullyQualifiedErrorId : ScriptHalted

Om nyckelordet Throw används i ett Catch-block utan uttryck genererar det den aktuella RuntimeException igen. Mer information finns i about_Try_Catch_Finally.

KASTA EN STRÄNG

Det valfria uttrycket i en Throw-instruktion kan vara en sträng, som du ser i följande exempel:

C:\PS> throw "This is an error."

This is an error.
At line:1 char:6
+ throw <<<<  "This is an error."
+ CategoryInfo          : OperationStopped: (This is an error.:String) [], R
untimeException
+ FullyQualifiedErrorId : This is an error.

KASTA ANDRA OBJEKT

Uttrycket kan också vara ett objekt som genererar objektet som representerar PowerShell-processen, enligt följande exempel:

C:\PS> throw (get-process PowerShell)

System.Diagnostics.Process (PowerShell)
At line:1 char:6
+ throw <<<<  (get-process PowerShell)
+ CategoryInfo          : OperationStopped: (System.Diagnostics.Process (Pow
erShell):Process) [],
RuntimeException
+ FullyQualifiedErrorId : System.Diagnostics.Process (PowerShell)

Du kan använda targetobject-egenskapen för ErrorRecord-objektet i den $error automatiska variabeln för att undersöka felet.

C:\PS> $error[0].targetobject

Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName
-------  ------    -----      ----- -----   ------     -- -----------
319      26    61016      70864   568     3.28   5548 PowerShell

Du kan också utlösa ett ErrorRecord-objekt eller ett Microsoft .NET Framework-undantag. I följande exempel används nyckelordet Throw för att utlösa ett System.FormatException-objekt.

C:\PS> $formatError = new-object system.formatexception

C:\PS> throw $formatError

One of the identified items was in an invalid format.
At line:1 char:6
+ throw <<<<  $formatError
+ CategoryInfo          : OperationStopped: (:) [], FormatException
+ FullyQualifiedErrorId : One of the identified items was in an invalid
format.

RESULTERANDE FEL

Nyckelordet Throw kan generera ett ErrorRecord-objekt. Egenskapen Exception för errorRecord-objektet innehåller ett RuntimeException-objekt. Resten av ErrorRecord-objektet och RuntimeException-objektet varierar med det objekt som nyckelordet Throw genererar.

RunTimeException-objektet omsluts i ett ErrorRecord-objekt och ErrorRecord-objektet sparas automatiskt i den $Error automatiska variabeln.

ANVÄNDA THROW FÖR ATT SKAPA EN OBLIGATORISK PARAMETER

Du kan använda nyckelordet Throw för att göra en funktionsparameter obligatorisk.

Det här är ett alternativ till att använda parametern Obligatorisk för nyckelordet Parameter. När du använder parametern Obligatorisk uppmanar systemet användaren att ange det obligatoriska parametervärdet. När du använder nyckelordet Throw (Kasta) stoppas kommandot och felposten visas.

Nyckelordet Throw i parameterunderuttrycket gör till exempel parametern Path till en obligatorisk parameter i funktionen.

I det här fallet genererar nyckelordet Throw en meddelandesträng, men det är förekomsten av nyckelordet Throw som genererar det avslutande felet om parametern Path inte har angetts. Uttrycket som följer på Throw är valfritt.

function Get-XMLFiles
{
  param ($path = $(throw "The Path parameter is required."))
  dir -path $path\*.xml -recurse |
    sort lastwritetime |
      ft lastwritetime, attributes, name  -auto
}

SE ÄVEN

about_Break

about_Continue

about_Scopes

about_Trap

about_Try_Catch_Finally