about_trap - PowerShell Befehl Hilfe und Beispiele

Beschreibt ein Schlüsselwort, das einen Fehler mit Abbruch behandelt. (about_trap)

THEMA
about_Trap
KURZBESCHREIBUNG
Beschreibt ein Schlüsselwort, das einen Fehler mit Abbruch behandelt.
DETAILBESCHREIBUNG
Bei einem Fehler mit Abbruch wird die Ausführung einer Anweisung verhindert. Wenn in Windows PowerShell ein Fehler mit Abbruch nicht behandelt wird, wird auch die Funktion oder das Skript in der aktuellen Pipeline nicht mehr ausgeführt. In anderen Programmiersprachen, z. B. C#, werden Fehler mit Abbruch als Ausnahmen bezeichnet. Das Trap-Schlüsselwort gibt eine Liste von Anweisungen an, die bei einem Fehler mit Abbruch ausgeführt werden. Mit Trap-Anweisungen werden Fehler mit Abbruch behandelt. Sie ermöglichen die fortgesetzte Ausführung des Skripts oder der Funktion. Syntax Für Trap-Anweisungen wird die folgende Syntax verwendet: trap [[<Fehlertyp>]] {<Anweisungsliste>} Die Trap-Anweisung enthält eine Liste von Anweisungen, die bei einem Fehler mit Abbruch ausgeführt werden. Das Trap-Schlüssel- wort kann optional einen Fehlertyp angeben. Für einen Fehlertyp sind Klammern erforderlich. Ein Skript oder ein Befehl kann mehrere Trap-Anweisungen aufweisen. Trap-Anweisungen können an jeder Stelle im Skript oder Befehl enthalten sein. Abfangen aller Fehler mit Abbruch Bei einem Fehler mit Abbruch, der nicht auf andere Weise in einem Skript oder einem Befehl behandelt wird, überprüft Windows PowerShell das Vorhandensein einer Trap-Anweisung für die Fehlerbehandlung. Wenn eine Trap-Anweisung vorhanden ist, führt Windows PowerShell das Skript oder den Befehl in der Trap-Anweisung weiterhin aus. Das folgende Beispiel stellt eine sehr einfache Trap-Anweisung dar: trap {"Fehler gefunden."} Diese Trap-Anweisung fängt jeden Fehler mit Abbruch auf. Das folgende Beispiel zeigt eine Funktion, die diese Trap-Anweisung enthält: function TrapTest { trap {"Fehler gefunden."} nonsenseString } Diese Funktion enthält eine unsinnige Zeichenfolge, die zu einem Fehler führt. Wenn diese Funktion ausgeführt wird, gibt sie Folgendes zurück: C:\PS> TrapTest Fehler gefunden. Das folgende Beispiel enthält eine Trap-Anweisung, mit der der Fehler in der automatischen Variablen "$_" angezeigt wird: function TrapTest { trap {"Fehler gefunden: $_"} nonsenseString } Wenn Sie diese Version der Funktion ausführen, gibt sie Folgendes zurück: C:\PS> TrapTest Fehler gefunden: Der Begriff 'nonsenseString' wird nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines ausführbaren Programms erkannt. Überprüfen Sie die Schreibung des Namens, oder, wenn ein Pfad eingeschlossen ist, überprüfen Sie die Richtigkeit des Pfads, und wiederholen Sie dann den Vorgang. Trap-Anweisungen können auch komplexer sein. Trap-Anweisungen können mehrere Bedingungen oder Funktionsaufrufe einschließen. Andere Programme können damit protokolliert, getestet und sogar ausgeführt werden. Abfangen angegebener Fehler mit Abbruch Das folgende Beispiel zeigt eine Trap-Anweisung, mit der der CommandNotFoundException-Fehlertyp abgefangen wird: trap [System.Management.Automation.CommandNotFoundException] {"Fehler im Befehl abgefangen"} Wenn eine Funktion oder ein Skript eine Zeichenfolge findet, die mit keinem bekannten Befehl übereinstimmt, zeigt diese Trap-Anweisung die Zeichenfolge "Fehler im Befehl abgefangen". Wenn Anweisungen in der Trap-Anweisungsliste ausgeführt wurden, wird von Windows PowerShell das Fehlerobjekt in den Fehlerstream geschrieben und das Skript dann fortgesetzt. Windows PowerShell verwendet die Microsoft .NET Framework-Aus- nahmetypen. Im folgenden Beispiel wird der Fehlertyp System.Exception angegeben: trap [System.Exception] {"Fehler abgefangen"} Der CommandNotFoundException-Fehlertyp erbt vom Typ "System.Exception". Von der Anweisung wird ein von einem unbekannten Befehl erstellter Fehler abgefangen. Auch andere Fehlertypen werden abgefangen. Sie können mehrere Trap-Anweisungen in einem Skript haben. Jeder Fehler kann von nur einer Trap-Anweisung abgefangen werden. Wenn bei einem Fehler mehrere Trap-Anweisungen verfügbar sind, verwendet Windows PowerShell die Trap-Anweisung mit dem spezifischsten Fehlertyp, der mit dem Fehler übereinstimmt. Das folgende Skriptbeispiel enthält einen Fehler. Das Skript enthält eine allgemeine Trap-Anweisung, mit der jeder Fehler mit Abbruch abgefangen wird, sowie eine spezifische Trap-Anweisung, mit der der CommandNotFoundException-Typ angegeben wird. trap {"Anderen Fehler mit Abbruch abgefangen" } trap [System.Management.Automation.CommandNotFoundException] {"Fehler im Befehl abgefangen"} nonsenseString Dieses Skript führt zum folgenden Ergebnis: Fehler im Befehl abgefangen Der Begriff 'nonsenseString' wird nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines ausführbaren Programms erkannt. Überprüfen Sie die Schreibung des Namens, oder, wenn ein Pfad eingeschlossen ist, überprüfen Sie die Richtigkeit des Pfads, und wiederholen Sie dann den Vorgang. At C:\PS>testScript1.ps1:3 char:19 + nonsenseString <<<< Da Windows PowerShell "nonsenseString" nicht als Cmdlet oder anderes Element erkennt, wird ein CommandNotFoundException- Fehler zurückgegeben. Dieser Fehler mit Abbruch wird von der spezifischen Trap-Anweisung abgefangen. Das folgende Skriptbeispiel enthält die gleichen Trap- Anweisungen mit einem anderen Fehler: trap {"Anderen Fehler mit Abbruch abgefangen" } trap [System.Management.Automation.CommandNotFoundException] {"Fehler im Befehl abgefangen"} 1/$null Dieses Skript führt zum folgenden Ergebnis: Anderen Fehler mit Abbruch abgefangen Versucht, durch 0 zu dividieren. At C:PS> errorX.ps1:3 char:7 + 1/ <<<< $null Beim Versuch, durch 0 zu dividieren, wird kein CommandNotFound Exception-Fehler ausgegeben. Stattdessen wird dieser Fehler von der anderen Trap-Anweisung abgefangen, die jeden Fehler mit Abbruch abfängt. Abfangen von Fehlern und Bereiche Wenn ein Fehler mit Abbruch im gleichen Bereich wie die Trap-Anweisung auftritt, setzt Windows PowerShell nach dem Ausführen der Trap-Anweisungen den Vorgang mit der Anweisung nach dem Fehler fort. Wenn sich die Trap-Anweisung in einem anderen Bereich als der Fehler befindet, wird die Ausführung mit der nächsten Anweisung fortgesetzt, die sich im gleichen Bereich wie die Trap-Anweisung befindet. Wenn beispielsweise in einer Funktion ein Fehler auftritt und die Trap-Anweisung in der Funktion enthalten ist, wird das Skript mit der nächsten Anweisung fortgesetzt. Das folgende Skript enthält z. B. einen Fehler und eine Trap-Anweisung: function function1 { trap { "Fehler: " } NonsenseString "function1 wurde abgeschlossen" } Weiter unten im Skript führt die Ausführung der Funktion "Function1" zum folgenden Ergebnis: function1 Fehler: Der Begriff 'NonsenseString' wird nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines ausführbaren Programms erkannt. Überprüfen Sie die Schreibung des Namens, oder, wenn ein Pfad eingeschlossen ist, überprüfen Sie die Richtigkeit des Pfads, und wiederholen Sie dann den Vorgang. At C:\PS>TestScript1.ps1:3 char:19 + NonsenseString <<<< function1 wurde abgeschlossen Die Trap-Anweisung in der Funktion fängt den Fehler auf. Wenn die Meldung angezeigt wurde, setzt Windows PowerShell die Ausführung der Funktion fort. Beachten Sie, dass Function1 abgeschlossen wurde. Vergleichen Sie dies mit dem folgenden Beispiel, das den gleichen Fehler und die gleiche Trap-Anweisung enthält. In diesem Beispiel befindet sich die Trap-Anweisung außerhalb der Funktion: function function2 { NonsenseString "function2 wurde abgeschlossen" } trap { "Fehler: " } . . . function2 Weiter unten im Skript führt die Ausführung der Funktion "Function2" zum folgenden Ergebnis: Fehler: Der Begriff 'NonsenseString' wird nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines ausführbaren Programms erkannt. Überprüfen Sie die Schreibung des Namens, oder, wenn ein Pfad eingeschlossen ist, überprüfen Sie die Richtigkeit des Pfads, und wiederholen Sie dann den Vorgang. At C:\PS>TestScript2.ps1:4 char:19 + NonsenseString <<<< In diesem Beispiel wurde der Befehl "function2 wurde abgeschlossen" nicht ausgeführt. Wenn sich die Trap-Anweisung außerhalb der Funktion befindet, liegen zwar beide Fehler mit Abbruch innerhalb einer Funktion vor, doch wechselt Windows PowerShell nach dem Ausführen der Trap-Anweisung nicht zur Funktion zurück. Verwenden des Break-Schlüsselworts und des Continue-Schlüsselworts Mit dem Break-Schlüsselwort und dem Continue-Schlüsselwort in einer Trap-Anweisung können Sie bestimmen, ob ein Skript oder ein Befehl nach einem Fehler mit Abbruch weiterhin ausgeführt werden soll. Wenn Sie eine Break-Anweisung in eine Trap-Anweisung-Liste einschließen, wird die Funktion oder das Skript von Windows PowerShell beendet. In der folgenden Beispielfunktion wird das Break-Schlüsselwort in einer Trap-Anweisung verwendet: C:\PS> function break_example { trap {"Fehler abgefangen"; break;} 1/$null "Funktion abgeschlossen." } C:\PS> break_example Fehler abgefangen Versucht, durch 0 zu dividieren. Bei Zeile:4 Zeichen:7 Da die Trap-Anweisung das Break-Schlüsselwort enthält, wird die Funktion nicht weiter ausgeführt, und die Zeile "Funktion abgeschlossen" wird nicht ausgeführt. Wenn Sie in eine Trap-Anweisung die Continue-Anweisung einfügen, wird Windows PowerShell nach der Anweisung fortgesetzt, die den Fehler verursacht hat, als ob Break oder Continue nicht vorhanden wären. Bei Verwendung des Continue-Schlüsselworts wird von Windows PowerShell jedoch kein Fehler in den Fehlerstream geschrieben. In der folgenden Beispielfunktion wird das Continue-Schlüssel- wort in einer Trap-Anweisung verwendet: C:\PS> function continue_example { trap {"Fehler abgefangen"; continue;} 1/$null "Funktion abgeschlossen."} C:\PS> continue_example Fehler abgefangen Funktion abgeschlossen. Die Funktion wird fortgesetzt, nachdem der Fehler abgefangen wurde, und die Anweisung "Funktion abgeschlossen" wird ausgeführt. In den Fehlerstream wird kein Fehler geschrieben. SIEHE AUCH about_Break about_Continue about_Throw about_Try_Catch_Finally about_Scopes C:\Windows>powershell get-help about_try_catch_finally -full

Microsoft Windows [Version 10.0.19045.3693]
Copyright (c) 2023 Microsoft Corporation.

ColorConsole [Version 3.7.1000] PowerShell 2.0-Export

Windows 11, 10, 8.1, 8, 7 / Server 2022, 2019, 2016











Windows-10


... Windows 10 FAQ
... Windows 10 How To


Windows 10 How To


... Windows 11 How To
... Windows 10 FAQ



PowerShell: Beschreibt ein Schlüsselwort, das einen Fehler mit Abbruch behandelt.

HTTP: ... PS_Windows/de/about_trap.htm
0.078
15680

Windows Erstellzeitänderungen, Zugriffszeitänderungen überwachen!

Cmd.exe Alternative in oranger Farbe unter MS Windows 10!

Datei-Typ festlegen in Windows 11 für APPs und Anwendungen!

Windows 11, 21H2 22H1, 22H2, 23H1, ... Version erkennen!

Mobilitätscenter in Windows 11 finden und starten!

A Directory print feature with integrated print preview for Windows!



(0)