Felhanteringens grunder

Flash Player 9 och senare, Adobe AIR 1.0 och senare

Ett körtidsfel är något som går snett i ActionScript-koden och hindrar ActionScript-innehållet från att köras som det är tänkt. För att vara säker på att ActionScript-koden kan köras av alla användare ska du skriva koden i det program som hanterar felet, åtgärdar eller går runt det eller meddelar användaren om det. Denna process kallas felhantering.

Felhanteringen är ett omfattande ämne, som behandlar många olika typer av fel som kan inträffa under kompilering eller när ett program körs. Fel som inträffar vid kompileringen är ofta lättare att identifiera. Åtgärda dem så att SWF-filen kan skapas.

Körningsfel kan vara svåra att upptäcka eftersom den felaktiga koden måste köras för att felet ska upptäckas. Om ett segment i programmet har flera kodgrenar, som en if..then..else-sats testar du alla möjliga villkor, med alla möjliga indatavärden som verkliga användare kan tänkas använda, så att du kan vara säker på att koden är felfri.

Körningsfel kan delas upp i två kategorier: programfel är misstag i ActionScript-koden, t.ex. angivande av fel datatyp för en metodparameter; logiska fel är misstag i programmeringslogiken (datakontroll och värdeförändringar), t.ex. användning av fel formel för att beräkna räntor i en banktillämpning. Som nämnts tidigare kan båda dessa typer av fel upptäckas och rättas till i förväg genom en omsorgsfull testning av programmet.

Du vill naturligtvis identifiera och ta bort alla fel från programmet innan det släpps till slutanvändarna. Det finns emellertid fel som inte går att förutse eller förhindras. Anta att ditt ActionScript-program läser in information från en speciell webbplats som du inte kan kontrollera. Om då webbplatsen vid någon tidpunkt inte är tillgänglig så kommer den del av programmet som är beroende av dessa externa data inte att fungera korrekt. Den viktigaste aspekten av felhantering är hur du förbereder för dessa oplanerade situationer och hur du hanterar dem på ett bra sätt. Användarna måste kunna fortsätta att använda programmet eller åtminstone få ett vänligt felmeddelandet om varför det inte fungerar.

Körningsfel kan uppdelas i två kategorier i ActionScript:

  • Felklasser: Många fel tillhör en felklass. När ett fel inträffar skapas (i till exempel Flash Player eller Adobe AIR) en instans av den specifika felklassen som är associerad med det aktuella felet. Du kan i koden använda den information som finns i felobjektet för att hantera felet på lämpligt sätt.

  • Felhändelser: Ibland inträffar ett fel när i vanliga fall en händelse borde ha utlösts i Flash-miljön. I så fall utlöses en felhändelse i stället. Varje felhändelse är associerad till en klass, och i Flash skickas en instans av den klassen till de metoder som prenumererar på felhändelsen.

För att avgöra om en viss metod kan utlösa ett fel eller en felhändelse läser du om metoden i Referenshandbok för ActionScript 3.0 i Adobe Flash-plattformen.

Viktiga termer och begrepp

Följande referenslista innehåller viktiga termer för programmering av felhanteringsrutiner:

Asynkron
Ett programkommando, t.ex. ett metodanrop, som inte ger ett omedelbart resultat. Det resulterar i stället i ett resultat (eller ett fel) i form av en händelse.

Fånga upp
När ett undantag (ett körningsfel) inträffar och koden upptäcker undantaget heter det att koden fångar upp undantaget. När ett undantag väl har fångats upp skickas inga fler meddelande om undantaget till annan ActionScript-kod.

Felsökningsversion
En särskild version av Flash-miljön, till exempel felsökningsversionen av Flash Player eller AIR Debug Launcher (ADL), som innehåller kod för att informera användaren om körningsfel. I standardversionen av Flash Player och Adobe AIR (den som de flesta användarna har) ignoreras fel som inte hanteras i ActionScript-koden. I felsökningsversionerna (som finns i Adobe Flash CS4 Professional och Adobe Flash Builder) visas ett varningsmeddelande om ett ohanterat fel inträffar.

Undantag
Ett fel som inträffar när ett program körs och som Flash-miljön inte kan lösa.

Återkasta
När koden fångar upp ett undantag skickas inga fler meddelande om undantaget till andra objekt. Om det har betydelse för andra objekt att undantaget har inträffat måste koden återkasta undantaget för att starta meddelandeprocessen på nytt.

Synkron
Ett programkommando, till exempel ett metodanrop, som ger ett omedelbart resultat (eller omedelbart ger ett fel) så att svaret kan användas i samma kodblock.

Ge
Att meddela Flash-miljön (och följaktligen meddela andra objekt och annan ActionScript-kod) att ett fel har inträffat kallas för att ge ett fel.