Rheinwerk Design < openbook > Rheinwerk Design - Know-how für Kreative.
Know-how für Kreative

 << zurück
ActionScript 1 und 2 von Sascha Wolter (http://www.saschawolter.de/)
Objektorientierung und Codedesign mit Flash MX 2004
Buch: ActionScript 1 und 2

ActionScript 1 und 2
672 S., mit CD, Referenzkarte, 44,90 Euro
Rheinwerk Design
ISBN 3-89842-221-6
gp Kapitel 10 Kontrollstrukturen
  gp 10.1 Bedingte Anweisungen
    gp 10.1.1 if
    gp 10.1.2 else
    gp 10.1.3 else if (mehr als eine Alternative)
    gp 10.1.4 switch und break
  gp 10.2 Schleifen
    gp 10.2.1 Endlosschleifen
    gp 10.2.2 while
    gp 10.2.3 do while
    gp 10.2.4 for
    gp 10.2.5 for in
    gp 10.2.6 break
    gp 10.2.7 continue
  gp 10.3 Ausnahmebehandlung
    gp 10.3.1 try-catch-finally
    gp 10.3.2 throw


Rheinwerk Design - Zum Seitenanfang

10.3 Ausnahmebehandlung  downtop

Die Ausnahmebehandlung in Flash gibt es leider erst seit Flash MX 2004. Dennoch ist Ausnahmebehandlung mit try-catch-Klauseln ein mächtiges Werkzeug für die Fehlerbehandlung zur Laufzeit, das bei größeren Projekten für den Flash Player 7 unbedingt eingesetzt werden sollte.

Möglicherweise sind Sie in einer Großküche beschäftigt und für die Zubereitung von Pfannkuchen zuständig. Normalerweise klappt dies immer, doch ab und an kann etwas schief gehen, was Sie dem Chefkoch möglichst mitteilen sollten:

function machePfannkuchen() {
   if (keineZutaten) {
      throw ("Zutaten für Pfannkuchen fehlen ...");
   }
}

Und wenn es ein weitsichtiger Chefkoch ist, dann kann der darauf reagieren, ganz egal wann und von wo aus er den Pfannkuchen in Auftrag gegeben hat, denn Sie geben die ausnahmsweise auftretenden Probleme ja an die nächst höhere Instanz weiter:

try {
   machePfannkuchen();
} catch (e) {
   trace("Schließe Restaurante, denn "+e);
}

Rheinwerk Design - Zum Seitenanfang

10.3.1 try-catch-finally  downtop

Der try-Block enthält die Anweisungen, die ausgeführt werden sollen und dabei eventuell zu einem Fehler führen könnten. Jedem try-Block muss dann mindestens noch ein weiterer Block folgen. Dabei steht der finally-Block für den Programmcode, der unabhängig von einem Fehler ausgeführt wird. Häufig wird dies für Aufräumaktionen eingesetzt, um z.B. Objekte oder Listener wieder zu entfernen:

try {

trace("tu was");

} finally {

trace("tu immer");

}

catch-Blöcke sind für die Fehlerbehandlung angedacht und erhalten den Fehler als Parameter:

try {
   trace("tu was");
} catch (error) {
   trace(error);
}

Jeder try-Block darf dabei mehrere catch-Blöcke besitzen, die abhängig vom Fehler abgearbeitet werden. Typisierung erlaubt es dabei, die Fehlerarten zu unterscheiden:

try {
   trace("tu was");
} catch (error:ErrorA) {
   trace(error);
} catch (error:ErrorB) {
   trace(error);
}

Sollte übrigens kein catch-Block verfügbar sein, dann wird der Fehler im Ausgabefenster gezeigt.

Fehlertyp

Normalerweise werden Sie eigene Klassen für die verschiedenen Fehlerarten anlegen, um Fehler unterscheiden und darauf reagieren zu können. Eine fehlerhafte Benutzereingabe sollte beispielsweise zu einer anderen Meldung führen als eine fehlgeschlagene Internetkommunikation. Sollte es Ihnen ausreichen, nur Fehlerbezeichnungen und Fehlercodes zu unterscheiden, dann würde das so wie der folgende Code aussehen:

try {

throw "Fehler";

// throw 99;

} catch (error:String) {

trace("Fehlerbezeichnung");

} catch (error:Number) {

trace("Fehlercode");

}


Rheinwerk Design - Zum Seitenanfang

10.3.2 throw  toptop

Da Flash leider keine Fehler zur Laufzeit erkennt, müssen wir als Entwickler selber dafür Sorge tragen. Dies geschieht mit Hilfe der throw-Anweisung. Diese erlaubt es, einen beliebigen Ausdruck als Fehler zu melden, der dann von dem nächsten verfügbaren catch-Block abgearbeitet wird:

try {
   throw "Fehler";
} catch (error) {
   trace(error);
}

Dabei können throw-Anweisungen völlig losgelöst von try-Blöcken verwendet werden. Sobald ein throw im Programmcode auftaucht, wird der Programmablauf unterbrochen und durch alle Funktionsaufrufe hindurch nach dem ersten passenden catch-Block gesucht. Jeder dabei gefundene finally-Block wird ebenfalls komplett abgearbeitet. Die folgende Funktion erkennt fehlerhafte Angaben und erzeugt eine Ausnahmebehandlung:

// Ermittle das Alter in Tagen
function getAgeInDays(date:Date):Number {
   var minDate = new Date(1900);
   var today = new Date();
   if (date<minDate || date>today) {
      throw "Ungültiger Geburtstag";
   }
   // getTime() ermittelt das Alter in Millisekunden
   return (today-date)/(1000*60*60*24);
}

Der folgende try-Block ruft diese Funktion nun auf. Da innerhalb der Funktion kein catch-Block bereitsteht, kommt der folgende catch-Block zum Einsatz, sobald ein Fehler von der Funktion erzeugt wird:

try {
   trace(getAgeInDays(new Date(1973, 0, 13)));
} catch (error) {
   trace(error);
}
 << zurück
  
  Zum Rheinwerk-Shop
Zum Rheinwerk-Shop: ActionScript 1 und 2
ActionScript 1 und 2
bestellen
 Ihre Meinung?
Wie hat Ihnen das Openbook gefallen?
Ihre Meinung

 Buchtipps
Zum Rheinwerk-Shop: JavaScript






 JavaScript


Zum Rheinwerk-Shop: jQuery






 jQuery


Zum Rheinwerk-Shop: Responsive Webdesign






 Responsive Webdesign


Zum Rheinwerk-Shop: Suchmaschinen-Optimierung






 Suchmaschinen-
 Optimierung


Zum Rheinwerk-Shop: Schrödinger lernt HTML5, CSS3 und JavaScript






 Schrödinger lernt
 HTML5, CSS3
 und JavaScript


 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und der Schweiz
InfoInfo





Copyright © Rheinwerk Verlag GmbH 2005
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das Openbook denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt.
Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


Nutzungsbestimmungen | Datenschutz | Impressum

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de

Cookie-Einstellungen ändern