Ứng dụng của tôi (Ruby 1.9.2) có thể tăng các ngoại lệ khác nhau, bao gồm cả ngắt kết nối mạng. Tôi rescue Exception => e
, sau đó thực hiện case/when
để xử lý chúng theo các cách thức kém hiệu quả, nhưng một số lỗi đi qua các trường hợp của tôi thẳng đến else
.Làm thế nào để bắt Errno :: ECONNRESET lớp trong "trường hợp khi"?
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
Giải cứu các lớp lỗi của bạn trong một khối đa nhiệm và sau đó bạn có thể tránh hoàn toàn câu lệnh. –