Omdat veel toepassingen kunnen draaien zonder logica voor de afhandeling van fouten, zijn ontwikkelaars geneigd om het inbouwen van foutafhandeling op de lange baan te schuiven. Maar een toepassing zonder foutafhandeling kan snel crashen of voor ergernis bij de gebruiker zorgen omdat iets niet werkt zoals verwacht. ActionScript 2.0 heeft een klasse van het type Error die het mogelijk maakt om logica toe te voegen aan aangepaste functies voor het genereren van uitzonderingenmet een bepaalde foutmelding. Omdat een correcte foutafhandeling cruciaal is voor een gebruiksvriendelijke toepassing, bevat ActionScript 3.0 een uitgebreide architectuur voor het afvangen van fouten.
Opmerking:
Hoewel de
Naslaggids voor ActionScript 3.0 voor het Adobe Flash-platform
beschrijvingen bevat over de uitzonderingen die door vele methoden worden gegenereerd, is het mogelijk dat niet alle uitzonderingen voor elke methode hierin zijn opgenomen. Ook al bevat de beschrijving informatie over enkele uitzonderingen die door de methode kunnen worden gegenereerd, kan een methode ook uitzonderingen genereren voor syntaxisfouten of andere problemen die niet uitdrukkelijk in de beschrijving van de methode staan vermeld.
Elementen van de foutafhandeling van ActionScript 3.0
ActionScript 3.0 bevat veel gereedschappen voor de afhandeling van fouten, waaronder:
-
Foutklassen. ActionScript 3.0 bevat een groot aantal Error-klassen om het bereik uit te breiden van situaties waardoor foutobjecten kunnen worden gegenereerd. Elke foutklasse helpt toepassingen bij het afhandelen van en reageren op specifieke foutomstandigheden in verband met systeemfouten (zoals bij een MemoryError), coderingsfouten (zoals bij een ArgumentError), netwerk- en communicatiefouten (zoals bij een URIError) en andere omstandigheden. Zie
De foutklassen vergelijken
voor meer informatie over elke klasse.
-
Minder onopgemerkte fouten. In eerdere versies van Flash Player werden fouten alleen gegenereerd en gemeld als u uitdrukkelijk de instructie
throw
gebruikte. Bij Flash Player 9 en hoger worden uitvoerfouten gegenereerd door native ActionScript-methoden en -eigenschappen. Door deze fouten kunt u uitzonderingen effectiever afhandelen op het moment dat deze zich voordoen. Vervolgens kunt u op elke uitzondering afzonderlijk reageren.
-
Duidelijke foutmeldingen tijdens het opsporen van fouten. Bij het gebruik van de foutopsporingsversie van Flash-runtime worden bij problematische code of omstandigheden duidelijke foutmeldingen gegenereerd. Aan de hand hiervan kunt u gemakkelijker terugvinden waarom een bepaald codeblok niet goed werkt. Door deze berichten verloopt het opsporen van fouten efficiënter. Zie
Werken met de foutopsporingsversies van Flash runtime
voor meer informatie.
-
Nauwkeurige fouten maken nauwkeurige foutmeldingen voor de gebruiker mogelijk tijdens de uitvoering. Bij eerdere versies van Flash Player retourneerde de methode
FileReference.upload()
een Booleaanse waarde
false
als het aanroepen van
upload()
mislukte. Dit wees dan op vijf mogelijke fouten. Als een fout optreedt bij het aanroepen van de methode
upload()
in ActionScript 3.0, kunt u aan de hand van vier specifieke fouten nauwkeurigere foutmeldingen voor de eindgebruikers laten weergeven.
-
Verfijnde foutafhandeling. Voor tal van veelvoorkomende situaties worden specifieke fouten gegenereerd. In ActionScript 2.0 heeft de eigenschap
name
bijvoorbeeld de waarde
null
voordat een FileReference-object is gevuld (dus voordat u de eigenschap
name
kunt gebruiken of weergeven, moet u ervoor zorgen dat de waarde is ingesteld en niet
null
is). Als u in ActionScript 3.0 probeert de eigenschap
name
te benaderen voordat die is gevuld, genereert Flash Player of AIR een IllegalOperationError, waarbij wordt gemeld dat de waarde niet is ingesteld. Vervolgens kunt u de fout afhandelen met blokken van het type
try..catch..finally
. Zie
Instructies van het type try..catch..finally gebruiken
voor meer informatie.
-
Geen significante nadelen voor de prestaties. Het gebruik van blokken van het type
try..catch..finally
voor de afhandeling van fouten vergt weinig of geen extra bronnen ten opzichte van eerdere versies van ActionScript.
-
De klasse ErrorEvent maakt het mogelijk om listeners te maken voor specifieke asynchrone foutgebeurtenissen. Zie
Reageren op foutgebeurtenissen en een specifieke status
voor meer informatie.
Strategieën voor de foutafhandeling
Ook als u geen logica voor de afhandeling van fouten aan uw code toevoegt, werkt uw toepassing normaal zolang er zich geen problemen voordoen. Maar als fouten niet actief worden afgehandeld en uw toepassing komt wel een probleem tegen, komen uw gebruikers nooit te weten waarom de toepassing het op dat specifieke moment niet meer doet.
U kunt de foutafhandeling in uw toepassing op verschillende manieren aanpakken. Hieronder staan de drie belangrijkste opties voor de foutafhandeling:
-
Gebruik instructies van het type
try..catch..finally
. Hiermee worden synchrone fouten afgevangen op het moment waarop ze zich voordoen. U kunt uw instructies nesten in een hiërarchie om uitzonderingen af te vangen op verschillende niveaus van de uitgevoerde code. Zie
Instructies van het type try..catch..finally gebruiken
voor meer informatie.
-
Maak uw eigen aangepaste foutobjecten. Met de klasse Error kunt u uw eigen aangepaste foutobjecten maken om specifieke bewerkingen in uw toepassing bij te houden waarvoor geen ingebouwde fouttypen beschikbaar zijn. Vervolgens kunt u de instructies
try..catch..finally
in uw aangepaste foutobjecten gebruiken. Zie
Aangepaste foutklassen maken
voor meer informatie.
-
Schrijf gebeurtenislisteners en -handlers om te reageren op foutgebeurtenissen. Aan de hand van deze strategie kunt u algemene fouthandlers maken waarmee u soortgelijke gebeurtenissen kunt afhandelen zonder dat u veel code hoeft te dupliceren in de blokken
try..catch..finally
. Op deze manier zult u ook sneller asynchrone fouten kunnen afvangen. Zie
Reageren op foutgebeurtenissen en een specifieke status
voor meer informatie.
|
|
|