about_Throw
Kurze Beschreibung
Beschreibt das Throw-Schlüsselwort, das einen Abbruchfehler generiert.
Lange Beschreibung
Das Schlüsselwort "Throw" verursacht einen Abbruchfehler. Sie können das Schlüsselwort "Throw" verwenden, um die Verarbeitung eines Befehls, einer Funktion oder eines Skripts zu beenden.
Sie können beispielsweise das Schlüsselwort "Throw" im Skriptblock einer If-Anweisung verwenden, um auf eine Bedingung oder im Catch-Block einer Try-Catch-End-Anweisung zu reagieren. Sie können auch das Schlüsselwort "Throw" in einer Parameterdeklaration verwenden, um einen Funktionsparameter obligatorisch zu machen.
Das Schlüsselwort "Throw" kann ein beliebiges Objekt auslösen, z. B. eine Benutzernachrichtenzeichenfolge oder das Objekt, das den Fehler verursacht hat.
Syntax
Die Syntax des Schlüsselworts "Throw" lautet wie folgt:
throw [<expression>]
Der Ausdruck in der Syntax "Auslösen" ist optional. Wenn die Throw-Anweisung nicht in einem Catch-Block angezeigt wird und kein Ausdruck enthält, generiert er einen ScriptHalted-Fehler.
C:\PS> throw
Exception: ScriptHalted
Wenn das Throw-Schlüsselwort in einem Catch-Block ohne Ausdruck verwendet wird, wird die aktuelle RuntimeException erneut ausgelöst. Weitere Informationen finden Sie unter about_Try_Catch_Finally.
Auslösen einer Zeichenfolge
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.
Auslösen anderer Objekte
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 Variable 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 Schlüsselwort "Throw" verwendet, um ein System.FormatException-Objekt zu auslö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
Das Schlüsselwort "Throw" kann ein ErrorRecord-Objekt generieren. Die Exception-Eigenschaft des ErrorRecord-Objekts enthält ein RuntimeException-Objekt. Der Rest des ErrorRecord-Objekts und das RuntimeException-Objekt variieren mit dem Objekt, das das Throw-Schlüsselwort ausgelöst hat.
Das RunTimeException-Objekt wird in ein ErrorRecord-Objekt umgebrochen, und das ErrorRecord-Objekt wird automatisch in der automatischen variablen $Error gespeichert.
Verwenden von "Throw", um einen obligatorischen Parameter zu erstellen
Im Gegensatz zu früheren Versionen von PowerShell verwenden Sie das Schlüsselwort "Throw" nicht für die Parameterüberprüfung. Siehe about_Functions_Advanced_Parameters für die richtige Art und Weise.