none
Was machen try und catch(C#) RRS feed

Antworten

  • Hallo,
    es kann passieren, dass etwas im Quellcode schief geht und dann eine Ausnahme ausgelöst wird. Das kann beispielsweise passieren, wenn du versuchst eine Datei zu lesen, die nicht existiert. Diese Ausnahmen (engl. Exceptions) bringen dein Programm zum Absturz, wenn du sie nicht abfängst.

    Wenn du also solchen Fehleranfälligen Code hast, solltest du ihn in einen try-Block packen. Der catch-Block dahinter fängt dann die Exceptio ab:

    try{
      //Kritischer Code
    }
    catch(ArgumentException ex){}//Fängt nur Ausnahmen des Typs ArgumentException und davon abgeleitete ab
    catch(Exception ex){}//Fängt alle Exceptions ab - macht selten Sinn, da du hier selten weist um was für eine Ausnahme es sich überhaupt handelt.
    catch{}//Fängt auch alle Exceptions ab, ohne dir aber das Exception-Objekt zur Verfügung zu stellen

    In den geschweiften Klammern des catch-Blocks kannst du dann eine Fehlermeldung ausgeben, den Fehler protokollieren oder was auch immer. Wie schon im Code steht, solltest du immer nur möglichst spezifische Ausnahmetypen abfragen.
    Abgefangene Ausnahmen haben nach außen keine Wirkung. Nicht abgefangene Ausnahmen lassen das Programm abstürzten.

    Wenn du innerhalb des try-Blocks irgendwelche Ressourcen verwendest, die wieder freigegeben werden müssen (beispielsweise Streams), kannst du dies in einem finally-Block tun:

    try{...}
    catch{...}
    finally{...}

    Dieser Block wird immer nach try und ggf. nach catch ausgeführt. Wenn du Fehler nicht abfangen willst, kannst du den catch-Block auch weg lassen.

    Siehe auch:
    Ausnahmebehandlungsanweisungen (C#-Referenz)
    using-Anweisung (C#-Referenz)


    Tom Lambert - C# MVP
    Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
    Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
    Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets

    Sonntag, 30. November 2014 14:33
    Moderator