Arriva un momento durante lo sviluppo, specialmente quando si sviluppa per altri sviluppatori, che si pensi "dovrei davvero anticipare questo errore". Questo suggerimento rapido ti mostrerà come farlo, in modo pulito.
Spesso, proverai ad anticipare un bug ma finirai solo a rintracciare qualcosa. Mentre esegui il debug, potresti trovare davvero utile lanciare un'eccezione per impedire al tuo codice di eseguire ulteriormente o fornire ulteriori informazioni sul perché l'errore si sta verificando. Per farlo è necessario gettare un errore per l'utente, il che significa che il debug player di Flash sarà in grado di catturarlo, così come la console durante l'esportazione diretta da Flash Professional.
Diciamo che sto costruendo una classe User; è una classe statica con parametri come nome
e Genere
.
Ora diciamo che voglio catturare se l'utente inserisce qualcosa di diverso da M o F nel suo genere:
package public class User1 private static var _nome: String; private static var _gender: String; // SETTERS nome set di funzioni statiche pubbliche (nome: String): void _name = nome; public static set di funzioni gender (gender: String): void gender = gender.toUpperCase (); if (gender! = "F" && gender! = "M") throw new Error ("Il genere deve essere F o M"); else _gender = gender; public static function get name (): String return _name; public static function get gender (): String return _gender;
Inviando qualcosa come User1.gender = "multi"
, Sarei stato gettato un errore nel mio debugger specificando che il mio sesso non è valido.
Afferrando questo concetto e sviluppandolo ulteriormente, posso anche creare classi di errore personalizzate.
Supponiamo che abbia una classe UConnection che gestisce l'attività di connessione utente come l'accesso. Questa funzione di login invia informazioni a un metodo php che restituisce un ID utente (in questo caso lo chiamerò uid) e devi anticipare che l'uid non è valido (ovvero che il login non può essere eseguito).
Quello che avresti bisogno di creare prima è una classe di errore personalizzata, una classe UIDError.
package public class UIDError estende Error public function UIDError (): void super ("ID utente restituito non valido");
In secondo luogo una classe che anticipa e gestisce l'eccezione:
package public class User private static var _uid: int; // SETTER set di funzioni statiche pubbliche uid (uid: int): void if (uid == 0) throw new UIDError (); else _uid = uid; // GETTER public static function get uid (): int return _uid;
Finalmente l'implementazione:
// tenere presente che si tratta di pseudo-codice, // non funzionerà in quanto non ho un login.php // e non invierò alcuna variabile tramite post, // per una versione funzionante riferisciti agli esempi forniti accesso alla funzione pubblica (un: String; pw: String): void urlloader: URLLoader = new URLLoader (); urlloader.addEventListener (Event.COMPLETE, onLogin) urlloader.load (new URLRequest ("login.php")); funzione privata onLogin (e: Event) try User.uid = e.target.data catch (e: UIDError) trace ("login invalid");
Il codice all'interno del catturare
il blocco viene eseguito se rileva eventuali errori generati all'interno del file provare
bloccare. In questo caso, se a UIDError
viene lanciato quando si tenta di impostare User.uid
, poi "login non valido"
sarà rintracciato. Se viene generato un altro tipo di errore, Flash Player reagirà nel modo normale.
Ecco, un modo semplice e pulito per gestire il codice, per te e il piacere del debug dei tuoi colleghi.
Spero che questo suggerimento ti sia piaciuto, grazie per la lettura!