Jämföra felklasserna

Flash Player 9 och senare, Adobe AIR 1.0 och senare

I ActionScript finns ett antal fördefinierade felklasser. Men du kan också använda samma felklasser i din egen kod. Det finns två typer av felklasser i ActionScript 3.0: ActionScript-huvudfelklasser och felklasser i flash.error-paketet. I paketet flash.error finns ytterligare klasser som ska underlätta vid programutveckling och felsökning i ActionScript 3.0.

Huvudfelklasser

Huvudfelklasserna omfattar klasserna Error, ArgumentError, EvalError, RangeError, ReferenceError, SecurityError, SyntaxError, TypeError, URIError och VerifyError. Dessa klasser finns representerade på namnutrymmets översta nivå.

Klassnamn

Beskrivning

Anteckningar

Error

Klassen Error används för att hantera undantag och är basklass för andra undantagsklasser som definieras i ECMAScript: EvalError, RangeError, ReferenceError, SyntaxError, TypeError och URIError.

Klassen Error utgör basklassen för alla körningsfel och är den basklass som rekommenderas för anpassade felklasser.

ArgumentError

Klassen ArgumentError representerar ett fel som uppstår när parametervärden som anges i en funktion inte matchar parametrarna som är definierade för funktionen.

Följande typer av argumentfel kan förekomma:

  • För få eller för många argument skickas till en metod.

  • Ett argument förväntades vara en numreringsmedlem, men var det inte.

EvalError

Ett EvalError-undantag skapas om en parameter skickas till konstruktorn i klassen Function eller om funktionen eval() anropas i användarkoden.

I ActionScript 3.0 har stödet för funktionen eval() tagits bort och försök att använda funktionen resulterar i ett fel.

I tidigare versioner av Flash Player användes funktionen eval() för att få åtkomst till variabler, egenskaper, objekt eller filmklipp.

RangeError

Ett RangeError-undantag genereras om ett numeriskt värde ligger utanför det tillåtna intervallet.

Till exempel genereras ett RangeError-undantag från klassen Timer om en fördröjning var negativ eller utan gräns. Du kommer också att erhålla ett RangeError-undantag om du försöker lägga till ett visningsobjekt med ett ogiltigt djup.

ReferenceError

Ett ReferenceError-undantag returneras när ett försök att referera till en odefinierad egenskap görs på ett fast (icke-dynamiskt) objekt. De versioner av ActionScript-kompilatorn som fanns före ActionScript 3.0 gav inga fel när ett försök gjordes att få åtkomst till en egenskap som var undefined. ActionScript 3.0 returnerar emellertid ReferenceError-undantaget i detta fall.

Undantag för odefinierade variabler kan innebära att det finns fel och de hjälper dig att förbättra programkvaliteten. Men om du inte är van vid att initiera variablerna kan det här nya kännas ovant och du måste kanske göra vissa förändringar i ditt sätt att koda.

SecurityError

Ett SecurityError-undantag erhålls när en säkerhetsöverträdelse äger rum och åtkomsten nekas.

Följande typer av säkerhetsfel kan förekomma:

  • En otillåten egenskapsåtkomst eller ett otillåtet metodanrop görs utanför säkerhetssandlådans gräns.

  • Ett försök att komma åt en URL-adress som inte är tillåten av säkerhetssandlådan gjordes.

  • Ett försök till socketanslutning gjordes på en port men den nödvändiga socketprincipfilen fanns inte på plats.

  • Ett försök gjordes att få åtkomst till användarens kamera eller mikrofon men användaren nekade åtkomst till enheten.

SyntaxError

Det uppstår ett SyntaxError-undantag när ett tolkningsfel sker i ActionScript-koden.

Ett SyntaxError-fel kan genereras under följande omständigheter:

  • ActionScript genererar SyntaxError-undantag om RegExp-klassen tolkar ett ogiltigt reguljärt uttryck.

  • ActionScript genererar SyntaxError-undantag om XMLDocument-klassen tolkar ogiltig XML.

TypeError

Det uppstår ett TypeError-undantag när den faktiska typen av operand skiljer sig från den förväntade typen.

Du kan få ett TypeError-undantag vid följande tillfällen:

  • När en funktionsparameter eller metod inte kan tvingas till den formella parametertypen.

  • När ett värde tilldelas till en variabel och inte kan tvingas till variabeltypen.

  • Höger sida om operatorn is eller instanceof inte är en giltig typ.

  • Nyckelordet super används felaktigt.

  • En egenskapssökning resulterar i fler än en bindning och är därför tvetydig.

  • En metod anropas på ett objekt som inte är kompatibelt. Ett TypeError-undantag genereras till exempel om en metod i RegExp-klassen kopplas till ett generiskt objekt och sedan anropas.

URIError

Ett URIError-undantag uppstår när en av de globala URI-hanteringsfunktionerna används på ett sätt som inte är kompatibelt med dess definition.

Ett URIError-undantag kan du få vid följande tillfällen:

Ett ogiltigt URI anges för en API-funktion för Flash Player när ett giltigt URI förväntas, t.ex. i Socket.connect().

VerifyError

Ett VerifyError-undantag genereras när en SWF-fil som har ett felaktigt format eller är skadad påträffas.

När en SWF-fil läser in en annan SWF-fil, kan den överordnade SWF-filen fånga upp ett VerifyError-undantag som genererades av den inlästa SWF-filen.

Felklasser i flash.error-paket

I flash.error-paketet finns felklasser som betraktas som en del av API:t för Flash-miljön. Till skillnad från felklasserna ovan kommunicerar flash.error-paketet felhändelser som är specifika för Flash-miljöer (som Flash Player och Adobe AIR).

Klassnamn

Beskrivning

Anteckningar

EOFError

Ett EOFError-undantag ges om du försöker läsa förbi slutet på tillgängliga data.

T.ex. orsakas ett EOFError när en av läsmetoderna i IDataInput-gränssnittet anropas och det inte finns tillräckligt med data för att tillgodose läsbegäran.

IllegalOperationError

Ett IllegalOperationError-undantag ges om en metod inte implementeras eller om implementeringen inte täcker den aktuella användningen.

Exempel på ogiltiga åtgärder för felundantag kan vara:

  • En basklass, t.ex. DisplayObjectContainer, ger mer funktionalitet än scenen kan stödja. Om du till exempel försöker hämta eller ställa in en mask på scenen (med stage.mask) genererar Flash-miljön ett IllegalOperationError-undantag med meddelandet "The Stage class does not implement this property or method".

  • En underklass ärver en metod som inte kräver eller erfordrar stöd.

  • Vissa åtkomstmetoder anropas när Flash Player kompileras utan åtkomststöd.

  • Funktioner som endast är för redigering anropas från en körningsversion av Flash Player.

  • Du försöker ange namnet för ett objekt som är placerat på tidslinjen.

IOError

Ett IOError-undantag ges när vissa typer av I/O-undantag inträffar.

Du får detta fel när exempelvis en läs/skriv-åtgärd görs på en socket som inte är ansluten eller vars anslutning har avbrutits.

MemoryError

Ett MemoryError-undantag ges när en begäran om minnestilldelning misslyckas.

ActionScript Virtual Machine 2 har som standard inga gränser för hur mycket minne ett ActionScript-program kan tilldelas. På en stationär dator är fel på grund av minnestilldelningen ovanliga. Ett fel genereras när systemet inte kan tilldela den minneskapacitet som krävs för en åtgärd. På en stationär dator är alltså dessa undantag ovanliga om inte kravet på minneskapacitet är ovanligt stort;. Till exempel är 3 miljarder byte inte möjligt eftersom ett 32-bitars Microsoft® Windows®-program endast har åtkomst till 2 GB för adressutrymmet.

ScriptTimeoutError

Ett ScriptTimeoutError-undantag ges när ett skripttidsgränsintervall på 15 sekunder är uppnått. Genom att använda ett ScriptTimeoutError-undantag kan du hantera skripttidsgränsen på ett bättre sätt. Om det inte finns någon undantagshanterare, öppnar hanteraren för det ej infångade undantaget en dialogruta med ett felmeddelande.

För att förhindra att en oärlig utvecklare fångar upp undantaget och lägger det i en oändlig slinga är det bara det första ScriptTimeoutError-undantaget i ett skript som kan fångas upp. Ett efterföljande ScriptTimeoutError-undantag kan inte fångas upp av koden och går omedelbart vidare till hanteraren för ej infångade undantag.

StackOverflowError

Ett StackOverflowError-undantag ges när stacken som är tillgänglig för skriptet är slut.

Ett StackOverflowError-undantag kan indikera att en oändlig rekursion har inträffat.