Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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.