Er komt een moment terwijl je je ontwikkelt, vooral wanneer je je ontwikkelt voor andere ontwikkelaars, dat je denkt: "Ik zou echt moeten anticiperen op deze fout". Deze snelle tip laat je zien hoe je het moet doen - op de schone manier.
Je zult vaak proberen te anticiperen op een bug, maar uiteindelijk iets opsporen. Tijdens het debuggen zou het erg handig zijn om een uitzondering te maken om ervoor te zorgen dat uw code niet verder kan worden uitgevoerd of om meer informatie te geven over waarom de fout zich voordoet. Om dat te doen moet je dat doen gooien een fout voor de gebruiker, wat betekent dat Flash-foutopsporingsprogramma het kan vangen, net als de console bij direct exporteren vanuit Flash Professional.
Laten we zeggen dat ik een gebruikersklasse aan het bouwen ben; het is een statische klasse met parameters zoals naam
en geslacht
.
Laten we nu zeggen dat ik wil vangen als de gebruiker iets anders dan M of F invoert in zijn / haar geslacht:
package public class User1 private static var _name: String; private static var _gender: String; // SETTERS public static set set name (name: String): void _name = name; public static function set gender (gender: String): void geslacht = gender.toUpperCase (); if (geslacht! = "F" && gender! = "M") gooi nieuwe fout ("Geslacht moet F of M zijn"); else _gender = geslacht; public static function get name (): String return _name; public static function got gender (): String return _gender;
Door zoiets in te dienen User1.gender = "multi"
, Er zou een fout in mijn foutopsporingsprogramma zijn gegenereerd met de vermelding dat mijn geslacht ongeldig is.
Ik grijp dit concept en ontwikkel het verder, ik kan ook aangepaste foutklassen bouwen.
Laten we zeggen dat ik een UConnection-klasse heb die de User Connection-activiteit afhandelt, zoals inloggen. Deze inlogfunctie verzendt informatie naar een php-methode die een gebruikers-ID retourneert (in dit geval zal ik het uid noemen) en u moet anticiperen dat de uid ongeldig is (wat betekent dat de aanmelding niet kon worden uitgevoerd).
Wat u eerst moet maken, is een aangepaste foutklasse, een UIDError-klasse.
package public class UIDError extends Error public function UIDError (): void super ("User ID return ongeldig");
Ten tweede een klasse die anticipeert en de uitzondering verwerkt:
package public class User private static var _uid: int; // SETTER openbare statische functieset uid (uid: int): void if (uid == 0) gooi nieuwe UIDError (); else _uid = uid; // GETTER public static function get uid (): int return _uid;
Eindelijk de implementatie:
// Houd in gedachten dat dit een pseudo-code is, // het zal niet werken omdat ik geen login.php // heb en ik stuur geen variabele per post, // voor een werkende versie verwijzen we naar de verstrekte voorbeelden public function login (un: String; pw: String): void urlloader: URLLoader = new URLLoader (); urlloader.addEventListener (Event.COMPLETE, onLogin) urlloader.load (nieuwe URLRequest ("login.php")); private function onLogin (e: Event) try User.uid = e.target.data catch (e: UIDError) trace ("login invalid");
De code in de vangst
blok wordt uitgevoerd als er fouten worden gedetecteerd die in de map worden gegooid proberen
blok. In dit geval, als a UIDError
wordt geworpen bij een poging om in te stellen User.uid
, dan "login ongeldig"
zal worden opgespoord. Als een ander type fout wordt gegenereerd, reageert Flash Player zoals normaal.
Dus daar heb je het, een schone, eenvoudige manier van foutafhandeling van je code, voor het debuggen van jou en je collega's.
Ik hoop dat je deze snelle tip leuk vond, bedankt voor het lezen!