Quick-Tip Kaster feil på den rene måten

Det kommer en tid mens du utvikler, spesielt når du utvikler for andre utviklere, at du tror "jeg burde virkelig forutse denne feilen". Denne raske tipsen viser deg hvordan du gjør det - den rene måten.


Trinn 1: Kaster

Ofte vil du prøve å forutse en feil, men ender opp med å bare spore noe ut. Mens feilsøking vil du finne det veldig nyttig å kaste et unntak for å få koden din til å stoppe fra å kjøre videre, eller gi litt mer informasjon om hvorfor feilen oppstår. For å gjøre det må du kaste en feil til brukeren, noe som betyr at Flash-feilsøkingsprogrammet vil kunne fange det, og konsollen vil bli eksportert direkte fra Flash Professional.

La oss si at jeg bygger en brukerklasse; Det er en statisk klasse med parametere som Navn og kjønn.

La oss si at jeg vil fange hvis brukeren skriver inn noe annet enn M eller F i hans / hennes kjønn:

 pakke offentlig klasse User1 private static var_name: String; privat statisk var _gender: String; // SETTERS offentlig statisk funksjon satt navn (navn: String): void _name = name;  statisk statisk funksjonssett kjønn (kjønn: streng): void gender = gender.toUpperCase (); hvis (kjønn! = "F" && kjønn! = "M") kaste ny feil ("Kjønn må være F eller M");  ellers _gender = kjønn;  offentlig statisk funksjon få navn (): String return _name;  Statisk statisk funksjon får kjønn (): String return _gender; 

Ved å sende inn noe lignende User1.gender = "multi", Jeg ville blitt kastet en feil i debuggeren min og angav at kjønet mitt er ugyldig.


Trinn 2: Prøv og fang feilen

Griper dette konseptet og utvikler det videre, jeg kan også bygge egendefinerte feilklasser.

La oss si at jeg har en UConnection-klasse som håndterer User Connection-aktivitet som pålogging. Denne innloggingsfunksjonen sender informasjon til en php-metode som returnerer et bruker-ID (i dette tilfellet vil jeg ringe det uid), og du må forutse at uidet er ugyldig (det betyr at innlogging ikke kunne utføres).

Det du trenger å lage først, er en tilpasset feilklasse, en UIDError-klasse.

 pakke offentlig klasse UIDError utvider Feil offentlig funksjon UIDError (): void super ("Bruker-ID returnert ugyldig"); 

For det andre en klasse som forutsetter og håndterer unntaket:

 pakke offentlig klasse Bruker privat statisk var _uid: int; // SETTER offentlig statisk funksjon satt uid (uid: int): void if (uid == 0) kaste nytt UIDError ();  else _uid = uid;  // GETTER offentlig statisk funksjon får uid (): int return _uid; 

Endelig gjennomføringen:

 // husk dette er pseudokode, // det vil ikke fungere som jeg ikke har en login.php // og jeg sender ikke noen variabel via innlegg, // for en fungerende versjon refererer til prøvene som er oppgitt Innlogging for offentlig funksjon (un: String; pw: String): void urlader: URLLoader = ny URLLoader (); urlloader.addEventListener (Event.COMPLETE, onLogin) urlloader.load (ny URLRequest ("login.php"));  privat funksjon onLogin (e: Event) prøv User.uid = e.target.data catch (e: UIDError) trace ("logg inn ugyldig"); 

Koden inne i å fange blokkere kjører hvis det merker noen feil som kastes inne i prøve blokkere. I dette tilfellet, hvis a UIDError kastes når du forsøker å sette User.uid, deretter "ugyldig innlogging" vil bli sporet. Hvis noen annen type feil blir kastet, vil Flash Player reagere på samme måte som det normalt gjør.


Konklusjon

Så der har du det, en ren, enkel måte å feile håndteringen av koden på, for deg og dine kollegaers feilsøking.

Jeg håper du likte dette raske tipset, takk for å lese!