De foutklassen vergelijken

Flash Player 9 of hoger, Adobe AIR 1.0 of hoger

ActionScript bevat een aantal vooraf gedefinieerde Error-klassen. Maar u kunt dezelfde klassen ook gebruiken in uw eigen code. Er zijn twee hoofdtypen Error-klassen in ActionScript 3.0: ActionScript-kernklassen van het type Error en flash.error-pakketklassen van het type Error. Het pakket flash.error bevat extra klassen die dienen als hulpmiddel bij het ontwikkelen van ActionScript 3.0-toepassingen en bij het opsporen van fouten hierin.

Kernklassen van het type Error

De kernklassen van het type Error bevatten onder meer de klassen Error, ArgumentError, EvalError, RangeError, ReferenceError, SecurityError, SyntaxError, TypeError, URIError en VerifyError. Elk van deze klassen bevindt zich in de naamruimte op hoofdniveau.

Klassennaam

Beschrijving

Opmerkingen

Fout

De klasse Error wordt gebruikt om uitzonderingen te genereren en vormt de basisklasse voor de overige uitzonderingsklassen die in ECMAScript zijn vastgelegd: EvalError, RangeError, ReferenceError, SyntaxError, TypeError en URIError.

De klasse Error dient als basisklasse voor alle runtimefouten en is de aanbevolen basisklasse voor al uw aangepaste foutklassen.

ArgumentError

De klasse ArgumentError vertegenwoordigt een fout die optreedt wanneer de parameterwaarden die in een functieaanroep worden aangeboden, niet overeenkomen met de parameters die voor die functie zijn gedefinieerd.

Voorbeelden van argumentfouten zijn:

  • De methode krijgt te weinig of te veel argumenten aangeleverd.

  • Het argument wordt geacht lid van een opsomming te zijn en is dat niet.

EvalError

Een uitzondering van het type EvalError wordt gegenereerd als parameters worden doorgegeven aan de constructor van de klasse Function of als de code van de gebruiker de functie eval() aanroept.

In ActionScript 3.0 is de ondersteuning voor de functie eval() verwijderd en wordt bij pogingen om de functie te gebruiken een fout gegenereerd.

In eerdere versies van Flash Player werd de functie eval() gebruikt om variabelen, eigenschappen, objecten en filmclips te benaderen aan de hand van de naam.

RangeError

Een uitzondering van het type RangeError wordt gegenereerd als een numerieke waarde buiten het acceptabele bereik ligt.

Er wordt bijvoorbeeld een RangeError gegenereerd door de klasse Timer bij een negatieve of niet eindige vertraging. Er kan ook een RangeError worden gegenereerd als u een weergaveobject probeert toe te voegen op een ongeldige diepte.

ReferenceError

Een uitzondering ReferenceError wordt gegenereerd wanneer een verwijzing naar een ongedefinieerde eigenschap wordt opgegeven bij een verzegeld (niet-dynamisch) object. Versies van de ActionScript-compiler vóór ActionScript 3.0 genereerden geen fout wanneer een eigenschap werd benaderd die undefined was. ActionScript 3.0 genereert in deze situatie echter de uitzonderingsfout ReferenceError.

Uitzonderingen voor ongedefinieerde variabelen wijzen op mogelijke fouten, zodat u uw software kunt verbeteren. Als u echter niet gewend bent aan het initialiseren van uw variabelen, kan dit nieuwe ActionScript-gedrag enige aanpassing vergen aan de manier waarop u gewoonlijk code schrijft.

SecurityError

De uitzondering SecurityError wordt gegenereerd wanneer de beveiliging wordt geschonden en de toegang wordt geweigerd.

Voorbeelden van beveiligingsfouten zijn:

  • Ongeautoriseerde toegang tot een eigenschap of een aanroep van een methode die een beveiligingssandboxgrens heeft overschreden.

  • Er is geprobeerd toegang tot een URL te verkrijgen, dat niet is toegestaan door de beveiligingssandbox.

  • Er is geprobeerd een socketverbinding tot stand te brengen met een poort, maar het noodzakelijke socketbeleidsbestand was niet aanwezig.

  • Er is een poging gedaan toegang te krijgen tot de camera of de microfoon van de gebruiker, maar de toegang tot het apparaat is door de gebruiker geweigerd.

SyntaxError

Er wordt een uitzondering van het type SyntaxError gegenereerd wanneer in uw ActionScript-code een fout bij het parseren optreedt.

Een SyntaxError kan worden gegenereerd in de volgende omstandigheden:

  • ActionScript genereert SyntaxError-uitzonderingen wanneer een ongeldige reguliere expressie door de klasse RegExp wordt geparseerd.

  • ActionScript genereert SyntaxError-uitzonderingen wanneer ongeldige XML door de klasse XMLDocument wordt geparseerd.

TypeError

Er wordt een uitzondering TypeError gegenereerd wanneer het daadwerkelijke type van een operand verschilt van het verwachte type.

Een TypeError kan worden gegenereerd in de volgende omstandigheden:

  • Een feitelijke parameter van een functie of methode kon niet tot het formele parametertype worden gebracht.

  • Een waarde wordt toegewezen aan een variabele en kan niet tot het variabeletype worden gebracht.

  • De rechterkant van de operator is of instanceof is geen geldig type.

  • Het trefwoord super wordt ongeldig gebruikt.

  • Het opzoeken van een eigenschap resulteert in meer dan één binding en is dus dubbelzinnig.

  • Een methode wordt aangeroepen voor een incompatibel object. Er wordt bijvoorbeeld een TypeError-uitzondering gegenereerd als een methode van de klasse RegExp wordt samengevoegd met een algemeen object en vervolgens wordt aangeroepen.

URIError

De uitzondering URIError wordt gegenereerd wanneer een van de algemene URI-verwerkingsfuncties wordt gebruikt op een manier die niet compatibel is met de definitie ervan.

Een URIError kan worden gegenereerd in de volgende omstandigheden:

Er is een ongeldige URI opgegeven voor een Flash Player API-functie die een geldige URI verwacht, zoals Socket.connect().

VerifyError

Er wordt een uitzondering van het type VerifyError gegenereerd wanneer een onjuist geformuleerd of beschadigd SWF-bestand wordt aangetroffen.

Wanneer een SWF-bestand een ander SWF-bestand laadt, kan het bovenliggende SWF-bestand een VerifyError afvangen die door het geladen SWF-bestand is gegenereerd.

Klassen van het type Error uit het pakket flash.error

Het pakket flash.error bevat klassen van het type Error die worden beschouwd als onderdeel van de API van de Flash-runtime. In tegenstelling tot de beschreven klassen van het type Error communiceert het pakket flash.error foutgebeurtenissen die specifiek zijn voor Flash-runtimes (zoals Flash Player of Adobe AIR).

Klassennaam

Beschrijving

Opmerkingen

EOFError

Een uitzondering EOFError wordt gegenereerd wanneer u voorbij het einde van de beschikbare gegevens wilt lezen.

Er wordt bijvoorbeeld een EOFError gegenereerd wanneer een van de leesmethoden in de IDataInput-interface wordt aangeroepen en er onvoldoende gegevens beschikbaar zijn om aan de leesaanvraag te voldoen.

IllegalOperationError

De uitzondering IllegalOperationError wordt gegenereerd wanneer een methode niet is geïmplementeerd of de implementatie niet geldt voor het huidige gebruik.

Voorbeelden van uitzonderingen van het type IllegalOperationError:

  • Een basisklasse, zoals DisplayObjectContainer, biedt meer functionaliteit dan het werkgebied kan ondersteunen. Als u bijvoorbeeld een masker ophaalt of instelt in het werkgebied (met stage.mask), genereert de Flash-runtime een IllegalOperationError met de melding dat de klasse Stage deze eigenschap of methode niet implementeert.

  • Een subklasse overerft een methode die de subklasse niet nodig heeft en niet wil ondersteunen.

  • Er worden bepaalde toegankelijkheidsmethoden aangeroepen wanneer Flash Player wordt gecompileerd zonder toegankelijkheidsondersteuning.

  • Functies die alleen bestemd zijn voor ontwerpen, worden aangeroepen door een runtimeversie van Flash Player.

  • U probeert de naam in te stellen van een object dat op de tijdlijn is geplaatst.

IOError

De uitzondering IOError wordt gegenereerd wanneer een fout optreedt bij invoer of uitvoer.

U krijgt deze fout bijvoorbeeld wanneer een lees- of schrijfbewerking wordt uitgevoerd via een socket die niet is verbonden of waarvan de verbinding is verbroken.

MemoryError

De uitzondering MemoryError wordt gegenereerd wanneer een aanvraag voor geheugentoewijzing mislukt.

ActionScript Virtual Machine 2 stelt standaard geen limiet aan de hoeveelheid geheugen die door een ActionScript-programma kan worden toegewezen. Op een gewone desktopcomputer komen fouten met de geheugentoewijzing niet zo veel voor. Er wordt een fout gegenereerd wanneer het systeem niet in staat is om het geheugen toe te wijzen dat nodig is voor een bewerking. Daarom is deze uitzondering zeldzaam op een desktopcomputer, tenzij er extreem veel geheugen wordt gevraagd. Zo is een aanvraag voor 3 miljard bytes onmogelijk, omdat een 32-bits Microsoft® Windows®-programma niet meer dan 2 GB aan adresruimte kan benaderen.

ScriptTimeoutError

De uitzondering ScriptTimeoutError wordt gegenereerd wanneer een time-outinterval van 15 seconden voor het script wordt bereikt. Door de uitzondering ScriptTimeoutError af te vangen kunt u de time-out in het script netter afhandelen. Als er geen uitzonderingshandler beschikbaar is, wordt een dialoogvenster met een foutmelding weergegeven door de handler voor niet-afgevangen uitzonderingen.

Om te voorkomen dat een ontwikkelaar met minder fraaie bedoelingen de uitzondering afvangt en een oneindige lus creëert, kan alleen de eerste uitzondering van het type ScriptTimeoutError die tijdens de uitvoering van een bepaald script wordt gegenereerd, worden afgevangen. Wanneer deze uitzondering daarna nog een keer optreedt, is afvangen niet meer mogelijk. De uitzondering gaat onmiddellijk naar de handler voor niet-afgevangen uitzonderingen.

StackOverflowError

De uitzondering StackOverflowError wordt gegenereerd wanneer de stack die voor het script beschikbaar is, overloopt.

Een uitzondering van het type StackOverflowError kan erop wijzen dat een oneindige herhaling is opgetreden.