Haben Sie jemals einen Anwendungsabsturz gesehen? Wenn ja, wissen Sie, wie frustrierend es werden kann und wenn Sie ein Programmierer sind, werden Sie wahrscheinlich den Entwickler verfluchen, weil er nicht den richtigen Fehlerbehandlungsmechanismus eingebaut hat! Und genau darum geht es in diesem Stück. Die Fehlerbehandlung ist ein integraler Bestandteil des Codes einer Anwendung, da sie unvorhergesehene Fehler abfängt und sicherstellt, dass die Anwendung sicher beendet wird., Wie bei den meisten Programmiersprachen unterstützt PowerShell auch einen Fehlerbehandlungsmechanismus namens Try-catch, aber vorher lernen wir etwas über die Fehlerbehandlung in PowerShell.
Warum benötigen Sie eine Fehlerbehandlung?
Eine ziemlich grundlegende Frage, die die meisten von Ihnen vielleicht bereits kennen. Lassen Sie uns dennoch kurz darauf eingehen, um einige wichtige Punkte zu wiederholen.
Die Fehlerbehandlung hilft auf folgende Weise.
- Verhindert, dass eine Anwendung abstürzt.
- Macht es dem Benutzer leicht zu wissen, dass etwas nicht stimmt und dass er sich an das Support-Team wenden sollte.,
- Liefert Details über den Fehler und seine möglichen Ursachen.
- Hilft bei der weiteren Analyse und Behebung der Probleme.
- Gibt die Möglichkeit, die an Endbenutzer gesendeten Fehlermeldungen anzupassen.
- Macht es einfach, Ihren Code zu pflegen.
- Ihr Programm kann auch nach dem Fehler weiterarbeiten, abhängig vom Fehler und Ihrem Code.
- Gilt als gute Programmierpraxis.
Nachdem wir nun die Vorteile der Fehlerbehandlung angesprochen haben, wollen wir sehen, wie sie in PowerShell implementiert werden kann.,
Fehlerbehandlung in PowerShell
Im Großen und Ganzen gibt es zwei Arten von Fehlern, die beendet und nicht beendet werden.
Beenden und Beenden von Fehlern
Wie der Name schon sagt, sind Beenden von Fehlern diejenigen, die kritisch sind und das Programm abrupt beenden, während Nicht-Beenden von Fehlern die Ausführung des Programms ermöglichen, aber die falsche Ausgabe oder manchmal sogar drastische Ergebnisse liefern können. Wenn Sie sich fragen, sind nicht abschließende Fehler möglicherweise gefährlicher als das Beenden von Fehlern, da Sie nicht wissen, welche Aspekte geändert werden können.,
Einige mögliche Fehler beim Beenden sind Speicher – und Syntaxfehler, während der große Teil der Fehler in der Programmierlogik und unerwartete Fehler in die Kategorie „Nicht beenden“ fallen.
Konvertieren von nicht abschließenden Fehlern in Abschlussfehler
Als Programmierer können Sie PowerShell anweisen, die nicht abschließenden Fehler als Abschlussfehler zu behandeln, sodass das Programm stoppt, wenn dieser bestimmte Fehler auftritt. Diese Änderung hilft Ihnen, den Fehler mit dem PowerShell-Try-Catch-Block zu behandeln, da standardmäßig nicht abschließende Fehler nicht mit dem Try-Catch-Block behandelt werden können.,
Um nicht abschließende Fehler in abschließende Fehler umzuwandeln, verwenden Sie einen Parameter namens ErrorAction. Jedes Cmdlet unterstützt diesen Parameter und soll dem Programm mitteilen, welche Aktion es ausführen soll, wenn ein Fehler auftritt. ErrorAction enthält die folgenden Optionen
- Stop: Dies stoppt das Programm und behandelt es als Abschlussfehler.
- Continue: Ermöglicht die Fortsetzung des Programms und der Fehler wird angezeigt.
- SilentlyContinue: Das Programm läuft und es werden keine Fehler angezeigt.
- Ignore: Ignoriert den Fehler und fährt fort.,
- Anfragen: Zeigt den Fehler an und prüft, ob er fortgesetzt werden soll.
- Suspend: Dies kann in einem Windows PowerShell-Workflow verwendet werden. Die Einschränkung besteht darin, dass erweiterte Funktionen nicht angehalten werden können.
Die Syntax für ErrorAction lautet:
Dieser Befehl ändert einen nicht abschließenden Fehler in einen abschließenden, damit Sie damit umgehen können.
Erstellen eines Try-Catch-Blocks
Sobald Sie einen Abschlussfehler haben oder einen nicht abschließenden in einen Abschlussfehler konvertiert haben, können Sie ihn mithilfe des PowerShell-Try-Catch-Blocks behandeln.,
Die generische Syntax lautet:
In diesem Beispiel werden Daten aus der Datei in $variable gespeichert und wenn ein Fehler vorliegt, gelangt der Code zum catch-Block und zeigt die Nachricht an. Das obige Beispiel ist ein grundlegendes, um Ihnen eine Vorstellung von der Syntax und Verwendung zu geben. In der realen Welt verwenden Sie diesen PowerShell-Try-Catch-Block, um Einblicke in den Fehler zu erhalten und entsprechend Maßnahmen zu ergreifen.,
Praktische Anwendungen von PowerShell try-catch block
Sie können auf den Fehlerdatensatz innerhalb des catch Blocks zugreifen. Tatsächlich wird die Fehlermeldung in der aktuellen Variablen $_gespeichert. Sie können mit diesem Fehlerdatensatz alles tun, z. B. den Fehler analysieren, eine Warnung anzeigen und vieles mehr. Ein mächtiges Attribut der aktuellen Variablen ist die Ausnahme, da die Idee darin besteht, mehr über die unerwarteten Ereignisse zu erfahren, die zum Stoppen des Programms geführt haben. Außerdem enthält die Ausnahme selbst viele Attribute wie ItemName,GetType, Message usw.,,
Zum Beispiel:
try{$variable = Get:content \user.txt:ErrorAction Stop}catch{write:output $_Exception.Message}
Nachdem die Grundlagen klar sind, gehen wir zum erweiterten Teil über.
Sie können den catch-Block verwenden, um bestimmte Ausnahmen abzufangen, sofern Sie sie kennen oder antizipieren. Angenommen, Sie möchten, dass eine bestimmte Nachricht angezeigt wird, wenn die Datei nicht gefunden wird, und andere Nachrichten für andere Ausnahmen sollte Ihr Code folgendermaßen aussehen:
Einige Punkte, die bei Verwendung von try-catch
Beachten Sie die folgenden Punkte, während Sie den PowerShell-Try-catch-Block verwenden.,
- Es sollte keinen Code zwischen den abschließenden Klammern des try-Blocks und dem catch-Befehl geben. Mit anderen Worten, das Wort „catch“ sollte sofort in der nächsten Zeile nach den schließenden Klammern des Try-Blocks
- Dieser PowerShell-Try-Catch-Block ist am nützlichsten, um Fehler zu behandeln, von denen Sie erwarten, dass sie im Programm auftreten können.
- Der catch-Block fängt jede Ausnahme ab, die im try-Block ausgelöst wird, unabhängig von seinem Ursprung.
- PowerShell try-catch-Befehl ist eine bequeme alternative, um mehrere if-Anweisungen.,
- Dem try-Block kann eine beliebige Anzahl von Catch-Blöcken folgen, sie sollten jedoch aufeinanderfolgend sein und keinen anderen Code dazwischen enthalten.
Finally block
Es gibt etwas namens finally block, das Sie mit try-catch verwenden können. Dies ist optional und muss nicht immer verwendet werden. Dieser Block führt den darin erwähnten Code aus, unabhängig davon, ob ein Fehler aufgetreten ist oder nicht. Dieser Block sollte direkt nach den schließenden Klammern des letzten Fangblocks kommen.,
Beispiel:
Im obigen Beispiel wird bei jedem Versuch, auf die Datei zuzugreifen, ein Eintrag in die Protokolldatei angehängt, unabhängig davon, ob die Datei gefunden wurde oder nicht.
Try-catch: Probieren Sie es aus und vermeiden Sie Abstürze
Fehlerbehandlung ist ein wichtiger Teil eines Programms, da es verhindert, dass die Anwendung abstürzt und hilft Ihnen, die mögliche Ursache des Fehlers zu analysieren. PowerShell Try-catch Block ist eine leistungsstarke Möglichkeit, abschließende Fehler zu erfassen, sodass Sie sie sicher behandeln können, ohne einen Absturz zu verursachen., Es hilft auch bei der detaillierten Analyse und dem Verständnis des Problems. Aus diesen Gründen ist es ein Muss in Ihren PowerShell-Skripten.
Leave a Reply