THEMA about_Throw KURZBESCHREIBUNG Beschreibt das Throw-Schlüsselwort, das einen Fehler mit Abbruch generiert. DETAILBESCHREIBUNG Das Throw-Schlüsselwort verursacht einen Fehler mit Abbruch. Mit dem Throw-Schlüsselwort können Sie die Verarbeitung eines Befehls, einer Funktion oder eines Skripts beenden. Sie können das Throw-Schlüsselwort beispielsweise im Skriptblock einer IF-Anweisung verwenden, um auf eine Bedingung zu reagieren, oder Sie verwenden es im Catch-Block einer Try-Catch-Finally- Anweisung. Außerdem können Sie das Throw-Schlüsselwort in einer Parameterdeklaration verwenden, um einen Funktionsparameter als erforderlich festzulegen. Das Throw-Schlüsselwort kann jedes 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 [<Ausdruck>] Der Ausdruck in der Throw-Syntax ist optional. Wenn die Throw-Anweisung nicht in einem Catch-Block enthalten ist und keinen Ausdruck einschließt, wird ein ScriptHalted-Fehler generiert. C:\PS> throw ScriptHalted Bei Zeile:1 Zeichen:6 + throw <<<< + CategoryInfo : OperationStopped: (:) [], RuntimeException + FullyQualifiedErrorId : ScriptHalted Wenn das Throw-Schlüsselwort ohne Ausdruck in einem Catch-Block verwendet wird, wird erneut die aktuelle "RuntimeException" 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 "Fehler aufgetreten." Fehler aufgetreten. Bei Zeile:1 Zeichen:6 + throw <<<< "Fehler aufgetreten." + CategoryInfo : OperationStopped: (Fehler aufgetreten.:String) [], RuntimeException + FullyQualifiedErrorId : Fehler aufgetreten. AUSLÖSEN VON ANDEREN OBJEKTEN Der Ausdruck kann auch ein Objekt sein,in dem das Objekt, das den PowerShell-Prozess darstellt, ausgelöst wird, wie im folgenden Beispiel gezeigt: C:\PS> throw (get-process powershell) System.Diagnostics.Process (powershell) Bei Zeile:1 Zeichen:6 + throw <<<< (get-process powershell) + CategoryInfo : OperationStopped: (System.Diagnostics.Process (powershell)):Process, [], RuntimeException + FullyQualifiedErrorId : System.Diagnostics.Process (powershell) Mit der TargetObject-Eigenschaft des ErrorRecord-Objekts in der automatischen Variablen "$error" können Sie den Fehler überprüfen. 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 Es kann auch ein ErrorRecord-Objekt oder eine Microsoft .NET Framework-Ausnahme ausgelöst werden. Im folgenden Beispiel wird mit dem Throw-Schlüsselwort ein System.FormatException-Objekt ausgelöst. C:\PS> $formatError = new-object system.formatexception C:\PS> throw $formatError Ein identifiziertes Element hat ein ungültiges Format. Bei Zeile:1 Zeichen:6 + throw <<<< $formatError + CategoryInfo : OperationStopped: (:) [], FormatException + FullyQualifiedErrorId : Ein identifiziertes Element hat ein ungültiges Format. RESULTIERENDER FEHLER Das Throw-Schlüsselwort kann ein ErrorRecord-Objekt generieren. Die Exception-Eigenschaft des ErrorRecord-Objekts enthält ein RuntimeException-Objekt. Der Rest des ErrorRecord-Objekts und des RuntimeException-Objekts ändert sich abhängig von dem Objekt, das das Throw-Schlüsselwort auslöst. Das RunTimeException-Objekt wird von einem ErrorRecord-Objekt umschlossen, und das ErrorRecord-Objekt wird automatisch in der automatischen Variablen "$Error" gespeichert. ERSTELLEN EINES ERFORDERLICHEN PARAMETERS MIT "THROW" Mit dem Throw-Schlüsselwort können Sie einen Funktionsparameter als erforderlich festlegen. Dies ist eine Alternative zur Verwendung des Mandatory-Parameters des Parameter-Schlüsselworts. Wenn Sie den Mandatory-Parameter verwenden, fordert das System den Benutzer zur Eingabe des erforderlichen Parameterwerts auf. Wenn Sie das Throw-Schlüsselwort verwenden, wird der Befehl beendet, und der Fehlerdatensatz wird angezeigt. Bei Verwendung des Throw-Schlüsselworts im Parameterteilausdruck wird beispielsweise der Path-Parameter als erforderlicher Parameter in der Funktion festgelegt. In diesem Fall löst das Throw-Schlüsselwort eine Meldungszeichen- folge aus. Der Fehler mit Abbruch wird jedoch durch das Throw-Schlüsselwort generiert, wenn der Path-Parameter nicht angegeben wird. Der auf "Throw" folgende Ausdruck ist optional. function Get-XMLFiles { param ($path = $(throw "Der Path-Parameter ist erforderlich.")) dir -path $path\* -include *.xml -recurse | sort lastwritetime | ft lastwritetime, attributes, name -auto } SIEHE AUCH about_Break about_Continue about_Scope about_Trap about_Try_Catch_Finally