about_Throw

Letzte Aktualisierung: Mai 2014

Betrifft: Windows PowerShell 2.0, Windows PowerShell 3.0, Windows PowerShell 4.0, Windows PowerShell 5.0

THEMA

about_Throw

KURZE BESCHREIBUNG

Beschreibt das Schlüsselwort Throw, das einen zum Abbruch führenden Fehler (Terminierungsfehler) generiert.

LANGE BESCHREIBUNG

Das Schlüsselwort Throw generiert einen zum Abbruch führenden Fehler (Terminierungsfehler). Mit dem Schlüsselwort Throw können Sie die Verarbeitung eines Befehls, einer Funktion oder eines Skripts beenden.

Sie können das Schlüsselwort Throw 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. In einer Parameterdeklaration können Sie einen Funktionsparameter mit dem Schlüsselwort Throw als erforderlich festlegen.

Das Schlüsselwort Throw kann jedes Objekt auslösen, beispielsweise die Zeichenfolge einer Benutzermeldung 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 von Throw ist optional. Eine Throw-Anweisung, die nicht in einem Catch-Block enthalten ist und keinen Ausdruck enthält, generiert einen ScriptHalted-Fehler.

        C:\PS> throw

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

Bei einem Throw-Schlüsselwort in einem Catch-Block ohne Ausdruck 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 "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) [], RuntimeException
            + FullyQualifiedErrorId : This is an error.

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)
        At line:1 char: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

Sie können auch ein ErrorRecord-Objekt oder eine Microsoft .NET Framework-Ausnahme auslösen. Im folgenden Beispiel löst das Schlüsselwort Throw ein System.FormatException-Objekt aus.

        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.

RESULTIERENDER FEHLER

Das Schlüsselwort Throw kann ein ErrorRecord-Objekt generieren. Die Eigenschaft Exception 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 Schlüsselwort Throw auslöst.

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

ERSTELLEN EINES OBLIGATORISCHEN PARAMETERS MIT THROW

Mit dem Schlüsselwort Throw können Sie einen Funktionsparameter als erforderlich festlegen.

Dies ist eine Alternative zur Verwendung des Parameters Mandatory des Schlüsselworts Parameter. Bei Verwendung des Parameters Mandatory fordert das System den Benutzer zur Eingabe eines Werts für den erforderlichen Parameter auf. Bei Verwendung des Parameters Throw wird der Befehl beendet und der Fehlerdatensatz wird angezeigt.

Beispielsweise wird bei Verwendung des Schlüsselworts Throw im Parameterteilausdruck der Parameter Path als für die Funktion erforderlicher Parameter deklariert.

In diesem Fall löst das Schlüsselwort Throw eine Meldungszeichenfolge aus. Ist für den Parameter Path jedoch kein Wert angegeben, so wird durch das Vorhandensein des Schlüsselworts Throw ein Terminierungsfehler ausgelöst. Der auf "Throw" folgende Ausdruck ist optional.

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

SIEHE AUCH

about_Break

about_Continue

about_Scope

about_Trap

about_Try_Catch_Finally