Basisbeginselen van foutafhandeling

Flash Player 9 of hoger, Adobe AIR 1.0 of hoger

Een uitvoeringsfout is iets dat verkeerd gaat in uw ActionScript-code waardoor de ActionScript-inhoud niet verder kan worden uitgevoerd. Als u wilt dat uw ActionScript-code probleemloos werkt voor gebruikers, moet u code aan uw toepassing toevoegen die ervoor zorgt dat de fout wordt afgehandeld. U kunt code schrijven die ervoor zorgt dat de fout wordt opgelost, dat een correcte omweg wordt gezocht of dat de gebruiker minstens een foutmelding krijgt. Dit hele proces wordt foutafhandeling genoemd.

Foutafhandeling is echter een breed begrip, waaronder vele soorten fouten vallen die kunnen optreden tijdens het compileren of uitvoeren van een toepassing. Fouten tijdens het compileren zijn meestal gemakkelijker te vinden. U moet ze oplossen om het maken van een SWF-bestand naar behoren af te ronden.

Uitvoeringsfouten zijn soms moeilijker op te sporen, omdat die zich pas voordoen wanneer de foute code echt wordt uitgevoerd. Als een segment in uw programma verschillende codevertakkingen bevat, zoals een if..then..else-instructie, moet u elke mogelijke voorwaarde testen met alle mogelijke invoerwaarden die echte gebruikers zouden kunnen gebruiken, om te bevestigen dat uw code foutloos is.

Uitvoeringsfouten kunnen in twee categorieën worden verdeeld: programmafouten zijn vergissingen in uw ActionScript-code (u gebruikt bijvoorbeeld het verkeerde gegevenstype voor een parameter van een methode) en logische fouten zijn vergissingen in de logica (het controleren van de gegevens en verwerken van waarden) van uw programma (u gebruikt bijvoorbeeld een verkeerde formule voor het berekenen van de rente in een banktoepassing). Beide soorten fouten kunnen vaak tijdig worden opgespoord en verholpen door de toepassing goed te testen.

Idealiter verwijdert u alle fouten voordat uw toepassing de eindgebruikers bereikt. Niet alle fouten kunnen echter worden voorzien of voorkomen. Stel bijvoorbeeld dat uw ActionScript-toepassing informatie uit een bepaalde website opvraagt, zonder dat u zelf enige controle over die website hebt. Als de website dan even niet beschikbaar is, werkt dat deel van uw toepassing dat afhankelijk is van die externe gegevens, niet goed. Het belangrijkste aspect van foutafhandeling is dat uw toepassing voorbereid is op deze onbekende gevallen en ze netjes kan afhandelen. Gebruikers moeten gewoon door kunnen gaan met het gebruik van uw toepassing of op zijn minst een duidelijk foutbericht krijgen waarom de toepassing niet meer werkt.

Uitvoeringsfouten worden in ActionScript op twee manieren vertegenwoordigd:

  • Foutklassen: aan veel fouten is een foutklasse gekoppeld. Wanneer een fout optreedt, maakt de Flash runtime (Flash Player of Adobe AIR) een instantie van de specifieke foutklasse die bij die specifieke fout hoort. Aan de hand van de informatie in dat foutobject kan uw code zorgen voor de juiste reactie op de fout.

  • Foutgebeurtenissen: soms treedt een fout op wanneer de Flash runtime normaal gesproken een gebeurtenis zou activeren. In dergelijke gevallen wordt er een foutgebeurtenis geactiveerd. Aan elke foutgebeurtenis is een klasse gekoppeld. De Flash-runtime geeft een instantie van die klasse door aan de methoden die op de foutgebeurtenis zijn geabonneerd.

Zie de vermelding van de methode in de Naslaggids voor ActionScript 3.0 voor het Adobe Flash-platform als u wilt weten of een bepaalde methode een fout of een foutgebeurtenis kan activeren.

Belangrijke concepten en termen

De volgende referentielijst bevat belangrijke termen met betrekking tot het programmeren van foutafhandelingsroutines:

Asynchroon
Een programmaopdracht, zoals een methodeaanroep, zonder onmiddellijk resultaat. In plaats daarvan heeft het resultaat (of de fout) de vorm van een gebeurtenis.

Afvangen
Wanneer een uitzondering (een uitvoeringsfout) optreedt en uw code wordt zich hiervan bewust, wordt gezegd dat de code die uitzondering afvangt. Nadat de uitzondering is afgevangen, brengt Flash de andere ActionScript-code niet meer op de hoogte van de uitzondering.

Foutopsporingsversie
Een speciale versie van Flash, zoals de foutopsporingsversie van Flash Player of AIR Debug Launcher (ADL), die code bevat waarmee gebruikers van runtimefouten op de hoogte worden gesteld. In de standaardversie van Flash Player of Adobe AIR (die de meeste gebruikers hebben) worden fouten die niet door uw ActionScript-code worden afgehandeld, gewoon genegeerd. In de foutopsporingsversies (die worden meegeleverd met Adobe Flash CS4 Professional en Adobe Flash Builder) wordt een waarschuwing weergegeven wanneer een niet-afgehandelde fout optreedt.

Uitzondering
Een fout die optreedt wanneer een toepassing wordt uitgevoerd en die Flash niet zelfstandig kan oplossen.

Opnieuw genereren
Wanneer uw code een uitzondering afvangt, worden andere objecten niet meer door Flash op de hoogte gesteld van de uitzondering. Als het belangrijk is dat andere objecten de uitzondering ontvangen, moet uw code de uitzondering opnieuw genereren om het meldingsproces opnieuw te beginnen.

Synchroon
Een programmaopdracht, zoals een methodeaanroep, met een onmiddellijk resultaat (of met een onmiddellijk gegenereerde fout). Hierdoor kan de reactie worden gebruikt binnen hetzelfde codeblok.

Genereren
Het op de hoogte brengen van Flash (en daardoor ook andere objecten en ActionScript-code) van het feit dat er zich een fout heeft voorgedaan, wordt een fout genereren genoemd.