Bienvenue sur PEBKAC.fr, le site qui recense les anecdotes où l’on se moque des utilisateurs ne maîtrisant pas l’outil informatique. PEBKAC est un acronyme signifiant « Problem Exists Between Keyboard And Chair ».
Le problème se situe entre la chaise et le clavier : soumettez vos histoires, donnez votre avis !
Ce site n'est pas le site original pebkac.fr. Je publie ici la liste des PEBKAC que j'ai pu sauvegarder avant que le site original ne soit mis hors ligne.
Je regarde un bout de code sur une des applications du client. Un bloc try/catch m'interpelle, et je vous laisse juger de l'intérêt de la chose :

try
{
    this.CodePrimaire = cdprimaire;
    Console.WriteLine("cdprimaire = " + cdprimaire);
}
catch (Exception e) { throw e; }

En clair, il récupère une exception pour...la relancer. PEBKAC.
PEBKAC #5180 proposé par op1um666 le 31/08/2012 | 13 commentaires | 👍🏽 👎🏽 +101
A en juger par le code :
1- il assigne une valeur dans un attribut de son objet
2- il l'affiche
3- s'il ne parvient pas à l'assigner ou à l'afficher, il chope l'exception générée pour la renvoyer.

Pour moi, ça veut juste dire qu'il a un handler pour ses exceptions ailleurs.

Bon après je peux me tromper, dans ce cas, merci d'éclairer ma lanterne.
Commentaire #57379 écrit par Skefrep le 31/08/2012 à 12h48 | 👍🏽 👎🏽
En plus, les chances d'avoir une exception sur ces deux lignes sont plutôt minces :)
Commentaire #57380 écrit par Ecto le 31/08/2012 à 12h48 | 👍🏽 👎🏽
"Pour moi, ça veut juste dire qu'il a un handler pour ses exceptions ailleurs."

Dans ce cas tu ne met pas de try catch vu qu'il ne sert absolument à rien. Enfin si, ca modifie légèrement la stacktrace de l'exception, ce qui est inutile au mieux.
Commentaire #57381 écrit par Ecto le 31/08/2012 à 12h50 | 👍🏽 👎🏽
Comme ça, je vois la possibilité de détacher la console.
Commentaire #57382 écrit par BSK le 31/08/2012 à 13h00 | 👍🏽 👎🏽
ça dépend du langage. Genre en C#, this.CodePrimaire peut très bien être une propriété et donc exécuter du code arbitraire de plusieurs centaines de ligne comme n'importe quel fonction au moment de l'assignation.
Mais apres on est d'accord, son try/catch ne sert à rien
Commentaire #57383 écrit par cg le 31/08/2012 à 13h12 | 👍🏽 👎🏽
En tout cas ça empêche d'attraper l'exception originale par pointeur ou par référénce ; au mieux, par copie.
Commentaire #57384 écrit par Benoit le 31/08/2012 à 13h16 | 👍🏽 👎🏽
ça ça ressemble à la ligne qu'on rajoute quand on veut jeter un coup d'oeil à 'e' en debug
Commentaire #57388 écrit par bamboo le 31/08/2012 à 13h40 | 👍🏽 👎🏽
C'est pour redonner de l'elan a l'exception, histoire qu'elle ne tombe pas par terre.
Commentaire #57401 écrit par TuXiC69 le 31/08/2012 à 14h16 | 👍🏽 👎🏽
Au moins il throw le e, combien de fois j'ai eu un "throw new Exception("oulala une exception qui va faire chier si elle catch en prod") sans récupération de l'exception d'origine donc "démerde toi pour trouver sur quelle ligne il y a eu l'exception"
Commentaire #57410 écrit par Myosotys le 31/08/2012 à 15h32 | 👍🏽 👎🏽
Bof, on sait pas comment c'est interfacé et si ça se trouve c'est pour essayer de choper une exception de Runtime et que du coup il la relance pour savoir si le programme est passé dans ce bloc lors d'un RuntimeException...
Commentaire #57429 écrit par Hum. le 31/08/2012 à 19h44 | 👍🏽 👎🏽
Ici il fait "throw e", ce qui modifie la stack trace, ce n'est pas beaucoup mieux pour la tracker ... pour bien faire il faut juste faire "catch (Exception e) { /* qqc utile */ throw; }"

et @bamboo pour ça tu as "$exception" dans quick watch.
Commentaire #57441 écrit par dr1rrb le 01/09/2012 à 00h27 | 👍🏽 👎🏽
Je fais partie de l'équipe qui maintient entre autre ce bout de "code", et je peux t'assurer qu'il sait même pas ce que c'est que le runtime... J'ai vu bien pire de le code, genre : libelle = libelle; et le pire c'est que le compilateur lui disait :D
Commentaire #57449 écrit par sGeeK le 01/09/2012 à 09h41 | 👍🏽 👎🏽
Mon fou rire de la soirée :')
Commentaire #58529 écrit par D-z le 13/09/2012 à 20h52 | 👍🏽 👎🏽