Benjamin POUSSIN a écrit :
- si on utilise les stats on a une exception et pas de stat :( (division par 0)
INFO [Thread-211] (SubProcessSimulationLauncher.java:251) run - dans un sous processus> INFO [SimThread sim_TestRendu_2009-03-23-08-27] (SimulationControl.java:174) setText - Simulation terminée INFO [Thread-211] (SubProcessSimulationLauncher.java:251) run - dans un sous processus> INFO [SimThread sim_TestRendu_2009-03-23-08-27] (InProcessSimulatorLauncher.java:444) localSimulateSameThread - Simulation time: 126.561 INFO [Thread-211] (SubProcessSimulationLauncher.java:251) run - dans un sous processus>Exception in thread "SimThread sim_TestRendu_2009-03-23-08-27" java.lang.ArithmeticException: / by zero INFO [Thread-211] (SubProcessSimulationLauncher.java:251) run - dans un sous processus> at fr.ifremer.isisfish.util.Trace.printStatisticAndClear(Trace.java:168) INFO [Thread-211] (SubProcessSimulationLauncher.java:251) run - dans un sous processus> at fr.ifremer.isisfish.aspect.Trace.printStatistiqueAndClear(Trace.java:105) INFO [Thread-211] (SubProcessSimulationLauncher.java:251) run - dans un sous processus> at fr.ifremer.isisfish.simulator.launcher.InProcessSimulatorLauncher.localSimulateSameThread(InProcessSimulatorLauncher.java:449) INFO [Thread-211] (SubProcessSimulationLauncher.java:251) run - dans un sous processus> at fr.ifremer.isisfish.simulator.launcher.InProcessSimulatorLauncher$SimThread.run(InProcessSimulatorLauncher.java:237)
J'y ai jeter un coup d'oeil, mais je ne suis pas bien sûr que le code actuel ai déjà fonctionné. Suite a un refactoring, on effectue un division par zéro parce que la variable n'est jamais utilisée. On a 2 aspect : public void traceAfterCall (Object e) { traceAfter(e, false); } appelé par : @After("executeMethod") public void traceAfterExecute (JoinPoint jp) { Method method = ((MethodSignature)jp.getSignature()).getMethod(); trace.traceAfterCall(method); } et public void traceAfterComputation (Object e) { traceAfter(e, true); } jamais appelé. Il y a un commentaire concernant la "computation", mais je ne vois pas trop dans quel cas il doit être incrémenté : if (computation) { stat[STAT_COMPUTATION]++; // add +1 to computation number else { // on incremente pas tout le temps STAT_CALL, car le plus // souvent lors de l'utilisation de l'objet Trace dans un cache // on a deja compte l'appel et reappelle lui meme computation // ce qui ferait 2 appel alors qu'il n'y en a qu'un en realite stat[STAT_CALL]++; // add +1 to call number } -- Éric <chatellier@codelutin.com> Tel: 02 40 50 29 28 http://www.codelutin.com