Quick

Quick-Tip: Kaster feil Clean Way
Del
Del
Del
Del

Dette Cyber ​​mandag Envato Tuts + kurs vil bli redusert til bare $ 3. Ikke gå glipp av
Dette innlegget er en del av en serie som heter Hvordan fikse bugs i Flash.Exclusive Freebie. Tr.ace (), en utmerket AS3 Debugging UtilityFixing Bugs i AS3: Innledning

Det kommer en tid mens utvikling, spesielt når du utvikler for andre utviklere, at du tenker "jeg burde egentlig forutse denne feilen". Denne Quick Tips vil vise deg hvordan du gjør det - ren måte




Trinn 1: Kaster

Ofte du skal prøve å forutse en. bug, men ender opp med bare å spore noe ut. Mens debugging ville du synes det er veldig nyttig å kaste et unntak for å gjøre koden stopp fra utførende videre, eller gi litt mer informasjon om hvorfor skjer det feil. For å gjøre det må du kaste
en feilmelding til brukeren, noe som betyr at Flash er debug-spilleren vil være i stand til å fange den, så vil konsollen når du eksporterer direkte fra Flash Professional.

La oss si at jeg 'm bygge et bruker klasse; det er en statisk klasse med parametere som navn og kjønn

Nå la oss si at jeg ønsker å fange dersom bruker innganger noe annet enn M eller F i hans /hennes kjønn.
pakke {public class Bruker1 {private Static Var snitt: String; privat Static Var _gender: String; //Settere public static funksjon satt navn (navn: String): void {snitt = navn; } Public static funksjon satt kjønn (kjønn: String): void {kjønn = gender.toUpperCase (); if (gender = "F" &! &! gender = "M") {kaste nytt Feil ("Gender må være F eller M"); } else {_gender = kjønn; }} Public static funksjon får navn (): String {return snitt; } Public static funksjon få kjønn (): String {return _gender; }}}

Ved å sende noe sånt User1.gender = "multi", ville jeg blitt kastet en feil i min debugger spesifisere at mitt kjønn er ugyldig



Trinn 2:. Prøv og Catch Feil

Griper dette konseptet og utvikle det videre, kan jeg også bygge tilpassede feilklasser.

La oss si jeg har en UConnection klasse som håndterer bruker Connection aktivitet som innlogging. Denne innloggingsfunksjonen sender informasjon til en php metode som returnerer en bruker-ID (i dette tilfellet vil jeg kalle det UID), og du trenger å forutse uid være ugyldig (som betyr innloggings kunne ikke utføres).

Hva ville du trenger for å lage første er en tilpasset feil klasse, en UIDError klasse
pakken {public class UIDError strekker Feil {offentlig funksjon UIDError (). void {super ("User ID returnert ugyldig"); }}}

For det andre en klasse som forventer og håndterer unntak:
pakken {public class User {private static Var _uid: int; //SETTER public static funksjon satt uid (uid: int): void {if (uid == 0) {kaste nytt UIDError (); } else {_uid = uid; }} //Getter public static funksjon få uid (): int {return _uid; }}}

Endelig gjennomføring:
//husk dette er pseudo-kode, //det vil ikke fungere som jeg ikke har en login.php //og jeg ikke sender noen variable gjennom post, //for en fungerende versjon referere til prøvene providedpublic funksjon innlogging (un: String, pw: String): void {URLLoader: URLLoader = new URLLoader (); urlloader.addEventListener (Event.COMPLETE, onLogin) urlloader.load (ny URLRequest ("login.php"));} private funksjon onLogin (e: Hendelses) {try {User.uid = e.target.data} catch (e : UIDError) {trace ("logg inn ugyldig"); }}

Koden inne i catch-blokken går hvis det merknader eventuelle feil blir kastet inni prøve blokken. I dette tilfellet, hvis en UIDError kastes når du forsøker å sette User.uid, deretter "login ugyldig" vil spores. Hvis noen annen type feil blir kastet, da Flash Player vil reagere på den måten det normalt gjør.



Konklusjon

Så det du har det, en ren, enkel måte å feil håndtering av koden din, for deg og dine kollegaer 'debugging glede.

Jeg håper du likte denne rask spiss, takk for lesing!