Mon application (Ruby 1.9.2) peut générer différentes exceptions, y compris des interruptions de connexion réseau. I rescue Exception => e
, puis faites case/when
pour les traiter de différentes manières, mais plusieurs erreurs passent par mes cas directement à else
.Comment faire pour attraper la classe Errno :: ECONNRESET dans "cas quand"?
rescue Exception => e
p e.class
case e.class
when Errno::ECONNRESET
p 1
when Errno::ECONNRESET,Errno::ECONNABORTED,Errno::ETIMEDOUT
p 2
else
p 3
end
end
Prints:
Errno::ECONNRESET
3
Récupérez vos classes d'erreurs dans un bloc de secours multiple, puis évitez complètement l'instruction case. –