Snabbtips Kasta fel på det rena sättet

Det kommer en tid när du utvecklar, speciellt när du utvecklar för andra utvecklare, som du tycker "jag borde verkligen förutse detta fel". Den här snabba tipsen visar hur du gör det - det rena sättet.


Steg 1: Kasta

Ofta försöker du förutse en bugg men slutar bara spåra någonting ut. Medan debugging skulle du finna det väldigt användbart att kasta ett undantag för att få din kod att stoppa från att exekvera ytterligare, eller ge mer information om varför felet händer. För att göra det måste du kasta ett fel för användaren, vilket betyder att Flash-debugspelaren kommer att kunna fånga den, liksom konsolen när den exporteras direkt från Flash Professional.

Låt oss säga att jag bygger en användarklass; Det är en statisk klass med parametrar som namn och kön.

Låt oss nu säga att jag vill fånga om användaren matar in något annat än M eller F i hans / hennes kön:

 paket public class User1 private static var_name: String; privat statisk var _gender: String; // SETTERS offentliga statiska funktionens inställningsnamn (namn: String): void _name = name;  statisk statisk statlig inställd kön (kön: String): void gender = gender.toUpperCase (); om (kön! = "F" && gender! = "M") kasta nytt fel ("Kön måste vara F eller M");  annat _gender = kön;  statisk statisk funktion få namn (): String return _name;  statisk statisk funktion få kön (): String return _gender; 

Genom att skicka in något liknande User1.gender = "multi", Jag skulle ha kastat ett fel i min debugger som anger att mitt kön är ogiltigt.


Steg 2: Försök och fånga felet

Genom att ta tag i detta koncept och utveckla det vidare kan jag också bygga anpassade felklasser.

Låt oss säga att jag har en UConnection-klass som hanterar User Connection-aktivitet som inloggning. Denna inloggningsfunktion skickar information till en php-metod som returnerar ett användar-ID (i det här fallet kommer jag att ringa det) och du måste förutse att uid är ogiltig (vilket innebär att inloggningen inte kunde utföras).

Vad du behöver skapa först är en anpassad felklass, en UIDError-klass.

 paket public class UIDError förlänger Error public function UIDError (): void super ("User ID returned invalid"); 

För det andra en klass som förutser och hanterar undantaget:

 paket public class User privat statisk var _uid: int; // SETTER offentliga statiska funktionen satt uid (uid: int): void if (uid == 0) kasta ny UIDError ();  annars _uid = uid;  // GETTER offentliga statiska funktionen får uid (): int return _uid; 

Slutligen genomförandet:

 // kom ihåg det här är pseudokod, // det fungerar inte eftersom jag inte har någon login.php // och jag skickar ingen variabel via inlägg, // för en fungerande version hänvisar till de prover som tillhandahålls inloggning av allmän funktion (un: String; pw: String): void urlader: URLLoader = ny URLLoader (); urlloader.addEventListener (Event.COMPLETE, onLogin) urlloader.load (ny URLRequest ("login.php"));  privat funktion onLogin (e: Event) försök User.uid = e.target.data fånga (e: UIDError) trace ("login invalid"); 

Koden inuti fånga block körs om det märker några fel som kastas inuti Prova blockera. I det här fallet, om a UIDError kastas när man försöker ställa in User.uid, sedan "ogiltig inloggning" kommer att spåras. Om någon annan typ av fel kastas, kommer Flash Player att reagera på det sätt som normalt gör det.


Slutsats

Så där har du det, ett rent, enkelt sätt att fel hantera din kod, för dig och dina medarbetares felsökning.

Jag hoppas att du gillade det här snabba tipset, tack för att du läste!