Bonjour, depuis quelques jours j'ai commancé à apprendre le Ruby, et en testant quelques trucs je suis tombé sur un cas que j'arrive pas à comprendre.
Voila mon code (Je m'excuse si c'est "sale", corrigez moi si c'est le cas )
Code :
- threads = []
- threads[0] = Thread.new('Compteur'){(0..10000).each{|i| Thread.current['i'] = i;puts "Je compte et je suis a :#{i}" if i%1000 == 0}}
- threads[1] = Thread.new('Decompteur') do
- 10000.downto(0)do|i|
- Thread.current['i'] = i
- puts "Je decompte et je suis a : #{i}" if i%1000 == 0
- end
- end
- threads[3] = Thread.new('Controleur') do
- i0 = threads[0]['i']
- i1 = threads[1]['i']
- if (i0 - i1).abs < 1000
- raise "Thread 0 a #{threads[0]['i']} et Thread 1 a #{threads[1]['i']}"
- end
- end
- try = false
- begin
- threads[3].join
- threads[0].join
- threads[1].join
- rescue RuntimeError => e
- if(!try)
- puts "Exception #{e.message}"
- try = true
- sleep 1
- retry
- else
- puts "Re-exception "+e.message
- end
- ensure
- puts "Fini"
- end
|
Et voila l'output
Citation :
Je compte et je suis a :0
Je compte et je suis a :1000
Je compte et je suis a :2000
Je compte et je suis a :3000
Je compte et je suis a :4000
Je compte et je suis a :5000
Je decompte et je suis a : 10000
Je decompte et je suis a : 9000
Je decompte et je suis a : 8000
Je decompte et je suis a : 7000
Je compte et je suis a :6000
Je compte et je suis a :7000
Je decompte et je suis a : 6000
Je decompte et je suis a : 5000
Exception Thread 0 a 7085 et Thread 1 a 6417
Je compte et je suis a :8000
Je compte et je suis a :9000
Je decompte et je suis a : 4000
Je decompte et je suis a : 3000
Je decompte et je suis a : 2000
Je decompte et je suis a : 1000
Je compte et je suis a :10000
Je decompte et je suis a : 0
Re-exception Thread 0 a 7085 et Thread 1 a 6417
Fini
|
Ma question est la suivante : Pourquoi la re-exception est lancée avec le meme message d'erreur que la 1ere et ceci bienque les autres threads continuent leur route dans problemes?
Merci bien
Message édité par esox_ch le 21-08-2007 à 22:53:07
---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait