try-/catch-Anweisungen

Dieses Thema im Forum "Softwareforum" wurde erstellt von Stachelpflanze, 19. Juni 2018.

  1. Stachelpflanze

    Stachelpflanze
    Registriert seit:
    1. Juni 2009
    Beiträge:
    8.430
    Guten Tag!

    Vielleicht kann mir jemand einen Ratschlag geben zum Thema try-/catch-Anweisungen (in meinem Fall in PowerShell).

    Nehmen wir an, ich führe eine Reihe Befehle aus, die ich im Fehlerfall mit einer Catch-Anweisung auffangen möchte.
    Das einzige, was ich im Catch-Block tun möchte, ist einen Logeintrag in eine Datei zu schreiben und dann das Programm abzubrechen.

    Welches Verfahren wäre sauberer?

    Möglichkeit 1:
    Code:
    try {
        Anweisung 1
        Anweisung 2
        Anweisung 3
    }
    catch {
        Logeintrag erstellen
    }
    Möglichkeit 2:
    Code:
    try {
        Anweisung 1
    }
    catch {
        Logeintrag erstellen
    }
    try {
        Anweisung 2
    }
    catch {
        Logeintrag erstellen
    }
    try {
        Anweisung 3
    }
    catch {
        Logeintrag erstellen
    }
    Bei Verfahren 2 könnte man vielleicht im Log individueller auf den Fehlerfall eingehen. Aber wirklich schlank wird der Code dann nicht gerade.
    Wer hat Erfahrung und kann einen Tipp geben, wie man so was elegant löst? Vielleicht programmiert ja auch jemand im professionellen Umfeld?

    Danke euch!
     
  2. unreal ..hat nun HSDPA :ugly:

    unreal
    Registriert seit:
    6. Mai 2005
    Beiträge:
    25.968
    Möglichkeit 2. Schaut zwar nicht "schön" aus, aber wenn bei Möglichkeit 1 die erste Anweisung fehlschlägt, wird 2 und 3 erst gar nicht mehr probiert. Weiß nicht wie relevant das für dich ist.
     
    Stachelpflanze gefällt das.
  3. MadCat N7 Moderator

    MadCat
    Registriert seit:
    29. Februar 2000
    Beiträge:
    71.331
    Ort:
    Delta-Quadrant
    Mein RIG:
    CPU:
    AMD Ryzen 7 7800X3D
    Grafikkarte:
    PNY GeForce RTX 4090 XLR8
    Motherboard:
    Asus TUF Gaming X670E-Plus
    RAM:
    64 GB G.Skill Trident Z NEO DDR5-6000 CL30
    Laufwerke:
    Samsung 980 Pro 2 TB
    Samsung 970 Evo Plus 2 TB
    2x WD SN850X 4 TB
    Soundkarte:
    Nubert nuBox A-125, Razer BlackShark V2 Pro
    Gehäuse:
    Fractal Torrent, Corsair AX850
    Maus und Tastatur:
    Keychron Q1 mit Gateron Oil Kings
    Razer Viper V2 Pro
    VKB Gladiator Evo
    Thrustmaster TCA Quadrant Airbus Edition
    Virpil Mongoos T-50CM3
    MFG Crosswind V3
    Betriebssystem:
    Windows 11 Pro
    Monitor:
    Samsung Odyssey Neo G7
    Hab mal kurz nachgeschaut, PowerShell kann mehrere catch-Blöcke verketten oder auch mehrere Exception-Typen mit einem catch-Block abfangen.

    https://blogs.technet.microsoft.com...finally-blocks-for-powershell-error-handling/

    Falls natürlich die anderen Anweisungen unabhängig ausgeführt werden müssen, bleiben nur separate try/catch-Blöcke übrig. Würde aber in der Form sinnvoller sein, das in weitere Methoden zu kapseln.
     
    Stachelpflanze gefällt das.
  4. murray

    murray
    Registriert seit:
    31. August 2006
    Beiträge:
    1.455
    Nimm Möglichkeit 1. AFAIK kannst du bei Powershell auch die entsprechende Zeilennummer ausgeben. Zudem könntest du mehrere catch Blöcke verfassen, je nach Exception Typ.

    Edit: Wenn die Anweisungen unabhängig voneinander ausgeführt werden müssen/dürfen, dann gilt das, was meine Vorposter angmerkt haben. Hängt immer davon ab, was du möchtest. Wenn eine Anweisung von einer anderen abhängt, kannst du das in einem Block zusammenfassen.
     
    Zuletzt bearbeitet: 19. Juni 2018
    Stachelpflanze gefällt das.
  5. Stachelpflanze

    Stachelpflanze
    Registriert seit:
    1. Juni 2009
    Beiträge:
    8.430
    Ich danke euch allen!
     
    MadCat gefällt das.
Top