ça me dit surtout que le CLR a codé les exceptions avec les pieds pour aller au contre-courant de java, et comme c'est pourri chez eux, ils préconisent de les éviter.
je pourrais arguer que TryParse est débile niveau performances, vu qu'il va être quasiment toujours suivi d'un Parse et que donc, chaque nombre va se retrouver parsé deux fois. Par rapport à un lancer d'exception, ha ha ha.
PS: dans l'article ils proposent de tester:
public void methodThrowsException (String param) throws Exception {
if (param==null) {
throw new Exception("La valeur 'null' n'est pas acceptée");
}
// traitement
}
on peut faire encore mieux en passant pas de string à l'exception, parce que le type de l'objet contient déja l'info sur l'erreur.
pour le problème de performances soulevé par l'article, si on veut vraiment lancer 50 watmille exceptions comme eux, on utilise un singleton. Exception.throwIt() comme en javacard.
#modtop# donc a coder comme un pied, autant laisser faire java.
je sinon je vois pas comment charat pourrait ramer vu que ça se réduit à un range check + retour d'un élément de tableau.
Si c'est ça... je lui dois déjà des clopes. Je vais me retrouver sur la paille et pas mal d'égratignures.
d'après l'article c'est surtout le fillinstacktrace() qui alloue plein d'objets. L'overrider permet de diviser le temps du "throw+new" par 10.
Uther Le 24/02/2011 à 18:02Edité par Uther le 24/02/2011 à 18:05 Ca me fait rire ces guéguerres d'optimisation très poussées alors qu'il s'agit d'un devoir Java. Le prof n'aura (à juste titre) rien à foutre de ces considérations tout comme d'ailleurs 99.9% des programmeurs Java.
Si on veux faire du code Java ultra optimisé(j'ai été contraint d'en faire et je n'en suis pas fier) il faut en effet éviter toutes les exceptions, il faut aussi éviter au maximum les new et quasiment tout mettre en static.
Au final on a un code moche pas du tout OO. Bref mieux vaut faire du C, au moins c'est fait pour.