Try und Catch und Finally in CSharp
In diesem Tutorial lernen wir Try(versuchen) and Catch(abfangen) und Finally(zu guter Letzt)kennen.
Der Try and Catch Befehl umschließt einen Codeabschnitt und wird dafür genutzt mögliche Fehler (exceptions – engl. für Ausnahmen) innerhalb des Codeabschnittes abzufangen, sodass man darauf reagieren kann.
Beispiel für die generelle Syntax von Try and Catch
try {
// code der gesichert laeuft
} catch (ExceptionKlassenname variablenname) {
// Fehlerbehandlung
}
Eine Try-Catch Anweisung besteht aus vier Teilen. Dem “try” Block der gesichert abläuft und möglicher Weise eine Exception (Ausnahme) werfen kann, die wir abfangen können. Die Fehlerbehandlung führen wir dann innerhalb des Catch-Blockes durch. Der Exception Klassenname beschreibt den Fehler auf den wir reagieren wollen. Dabei können wir mehrere Exceptions abfangen. Der Variablenname benennt die Exception innerhalb des Catch-blockes, sodass wir entsprechend der Exception innerhalb des Catch-blockes reagieren können. (z.B. Input Output exception – wenn die Verbindung mit dem Internet nicht klappte).
Wenn die abgefangene Exception innerhalb des Try-blockes geworfen(throws) wird, so springt unser Programm direkt in den Catch-Block. Wenn die Exception nicht geworfen wird, wird der Catch-block nicht aufgerufen und unser Code läuft darunter ganz normal weiter.
Beispiel für Try & Catch und Finally in CSharp
public class Panjutorials {
public static void Main(string[] args)
{
Console.WriteLine("Wie alt bist du?");
string input = Console.ReadLine();
try
{
int alter = Int32.Parse(input);
Console.WriteLine("Du bist " + alter + " Jahre alt.");
}
catch (Exception e)
{
Console.WriteLine("Du Schlingel hast keine Zahl eingegeben.");
}
Console.ReadLine();
}
}
Wir verwenden hier also eine Eingabe des Nutzers. Dabei zeigen wir ihm den Text “Wie alt bist du?” an. Da wir als Eingabe einen Wert erwarten den wir in einen Integer umwandeln/parsen können, die Eingabe jedoch auch etwas anderes als eine Zahl sein kann, umgeben wir das Umwandeln mit einem try und catch. Wir versuchen also die Eingabe umzuwandeln, wenn dies nicht funktioniert, soll der Catch – Block ausgeführt werden.
Hierbei ist es wichtig, dass wir Try und Catch verwenden, da unser Programm sonst abstürzen würde, sofern die Eingabe des Nutzers nicht in einen Integer umgewandelt werden kann.
Bei Try and Catch gibt es noch die Möglichkeit den Begriff Finally anzufügen. Der ist dafür da Code auszuführen, egal ob nun Try oder Catch durchgeführt wurde, also egal ob der Code im Try Block funktioniert hat, oder nicht.
try {
// code der gesichert laeuft
} catch (ExceptionKlassenname variablenname) {
// Fehlerbehandlung
} finally {
// wird definitiv durchgeführt
}
Finally ist extrem nützlich um z.B. eine Variable wieder in ihren Ursprungs-zustand zu bringen, das Programm zu schließen oder eine (Internet-)Verbindung zu beenden.