Saya melewati program ruby lama yang berjalan lama, yang memiliki banyak kejadian
begin
#dosomething
rescue Exception => e
#halt the exception's progress
end
sepanjang itu.
Tanpa melacak setiap kemungkinan pengecualian yang masing-masing dapat tangani (setidaknya tidak segera), saya masih ingin menutupnya sesekali CtrlC.
Dan saya ingin melakukannya dengan cara yang hanya menambah kode (jadi saya tidak memengaruhi perilaku yang ada, atau melewatkan pengecualian yang tertangkap di tengah proses.)
[ CtrlCadalah SIGINT, atau SystemExit, yang tampaknya setara dengan SignalException.new("INT")
sistem penanganan pengecualian Ruby. class SignalException < Exception
, itulah mengapa masalah ini muncul.]
Kode yang ingin saya tulis adalah:
begin
#dosomething
rescue SignalException => e
raise e
rescue Exception => e
#halt the exception's progress
end
EDIT: Kode ini berfungsi, selama Anda mendapatkan kelas pengecualian yang ingin Anda perangkap dengan benar. Itu adalah SystemExit, Interrupt, atau IRB :: Abort seperti di bawah ini.