try-catch Block


Ein sog. try-catch Block kann genutzt werden, um einen Codeabschnitt zu umschließen, der voraussichtlich einmal eine Fehlermeldung zurück geben wird. Dies ist z.B. bei Schreibvorgängen auf der Festplatte und noch viel eher beim Abrufen von Daten aus dem Internet der Fall.

Der try-catch Block kann einen Fehler (oder besser eine Ausnahme – Exeption) abfangen und so den Absturz des Programms verhindern.

try {
// hier läuft der fehleranfällige Code

} catch (Fehlerklasse Fehlervariable) {

// Fehlerbehandlung
};

Ablauf:

Passiert im try-Abschnitt wirklich ein Fehler (es wird eine Exception „geworfen“), wird die catch-Funktion aufgerufen und die Fehlermeldung in der Fehlervariable gespeichert. Nun hat man die Möglichkeit im Catch Abschnitt mit dem Fehler umzugehen (Abfrage nochmal starten, oder was auch immer….) und die Fehlervariable in der Konsole auszugeben, damit man dort auch sieht, dass ein Fehler passiert ist. Das Programm stürzt ja nicht mehr ab.

Praktisches Beispiel Internet Abfrage :

try {
String restUrl="http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20geo.places%20where%20text%3D%22"+loc+"%22&diagnostics=true";

xmlResponse = new XMLElement(parent, restUrl);
XMLElement[] placeXMLElements = xmlResponse.getChildren("results/place");
// println("Found " + placeXMLElements.length + " places");
if (placeXMLElements.length>0) {
String name = placeXMLElements[0].getChild(2).getContent();
float lat = new Float(placeXMLElements[0].getChild(10).getChild(0).getContent());
float lng = new Float(placeXMLElements[0].getChild(10).getChild(1).getContent());

PlaceMarker placeMarker = new PlaceMarker(name, col1, col2, lat, lng);
placeMarkers.add(placeMarker);
println("MarkersSize: " + placeMarkers.size());
//println(i + ": " + placeMarker);
//println(i + ". " + name + " (" + lat + ", " + lng + ")");
}
}
catch (NullPointerException e) {
println("Couldn't launch request: " + e);
};

Man könnte jetzt auf die Idee kommen bei jeder Fehlermeldung einen try – catch Block einzusezen, um den Programmabsturz zu verhindern. Dies sollte man allerdings dringend vermeiden. Die Folge wäre Code, der zwar nicht macht was er soll, aber auch nicht abstürzt und vielleicht nicht einmal eine Fehlermeldung ausspuckt.

Fazit: try-catch Blöcke sollten nicht eingesetzt werden, um schlechte Programmierung zu verschleiern.

Advertisements

Ein Kommentar

  1. Pingback: Processing – Über dieses Weblog « processing – tutorial

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

%d Bloggern gefällt das: