Freigeben über


über_Auslösen

Kurzbeschreibung

Beschreibt das Throw-Schlüsselwort, das einen Abbruchfehler generiert.

Lange Beschreibung

Das Throw-Schlüsselwort verursacht einen Beendigungsfehler. Sie können das Throw-Schlüsselwort verwenden, um die Verarbeitung eines Befehls, einer Funktion oder eines Skripts zu stoppen.

Sie können z. B. das Throw-Schlüsselwort im Skriptblock einer If-Anweisung verwenden, um auf eine Bedingung zu reagieren, oder im Catch-Block einer Try-Catch-Finally-Anweisung. Sie können auch das Throw-Schlüsselwort in einer Parameterdeklaration verwenden, um einen Funktionsparameter als obligatorisch festzulegen.

Das Throw-Schlüsselwort kann ein beliebiges Objekt auslösen, z. B. eine Benutzermeldungszeichenfolge oder das Objekt, das den Fehler verursacht hat.

Syntax

Die Syntax des Throw-Schlüsselworts lautet wie folgt:

throw [<expression>]

Der Ausdruck in der Throw-Syntax ist optional. Wenn die Throw-Anweisung nicht in einem Catch-Block angezeigt wird und keinen Ausdruck enthält, wird ein ScriptHalted-Fehler generiert.

C:\PS> throw

Exception: ScriptHalted

Wenn das Throw-Schlüsselwort in einem Catch-Block ohne Ausdruck verwendet wird, löst es die aktuelle RuntimeException erneut aus. Weitere Informationen finden Sie unter about_Try_Catch_Finally.

Werfen einer Schnur

Der optionale Ausdruck in einer Throw-Anweisung kann eine Zeichenfolge sein, wie im folgenden Beispiel gezeigt:

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

Exception: This is an error.

Werfen von anderen Gegenständen

Der Ausdruck kann auch ein Objekt sein, das das Objekt auslöst, das den PowerShell-Prozess darstellt, wie im folgenden Beispiel gezeigt:

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

Exception: System.Diagnostics.Process (pwsh) System.Diagnostics.Process (pwsh) System.Diagnostics.Process (pwsh)

Sie können die TargetObject-Eigenschaft des ErrorRecord-Objekts in der $error automatischen Variablen verwenden, um den Fehler zu untersuchen.

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

 NPM(K)    PM(M)      WS(M)     CPU(s)      Id  SI ProcessName
 ------    -----      -----     ------      --  -- -----------
    125   174.44     229.57      23.61    1548   2 pwsh
     63    44.07      81.95       1.75    1732   2 pwsh
     63    43.32      77.65       1.48    9092   2 pwsh

Sie können auch ein ErrorRecord-Objekt oder eine .NET-Ausnahme auslösen. Im folgenden Beispiel wird das Throw-Schlüsselwort verwendet, um ein System.FormatException-Objekt auszulösen.

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

C:\PS> throw $formatError

OperationStopped: One of the identified items was in an invalid format.

Der resultierende Fehler

Mit dem Throw-Schlüsselwort kann ein ErrorRecord-Objekt generiert werden. Die Exception-Eigenschaft des ErrorRecord-Objekts enthält ein RuntimeException-Objekt. Der Rest des ErrorRecord-Objekts und des RuntimeException-Objekts variiert je nach dem Objekt, das das Throw-Schlüsselwort auslöst.

Das RunTimeException-Objekt wird in ein ErrorRecord-Objekt eingeschlossen, und das ErrorRecord-Objekt wird automatisch in der $Error automatischen Variablen gespeichert.

Verwenden von Throw zum Erstellen eines obligatorischen Parameters

Im Gegensatz zu früheren Versionen von PowerShell sollten Sie das Throw-Schlüsselwort nicht für die Parameterüberprüfung verwenden. Siehe about_Functions_Advanced_Parameters für den richtigen Weg.

Siehe auch