5
การจับ Ctrl-c ในทับทิม
ฉันผ่านโปรแกรมทับทิมที่ใช้งานมายาวนานซึ่งมีเหตุการณ์ต่างๆเกิดขึ้นมากมาย begin #dosomething rescue Exception => e #halt the exception's progress end ตลอดเวลา โดยไม่ต้องติดตามลงทุกข้อยกเว้นเดียวเหล่านี้ในแต่ละอาจจะจัดการ (อย่างน้อยไม่ได้ทันที) CtrlCผมยังคงชอบที่จะสามารถปิดมันลงในช่วงเวลาที่มี และฉันต้องการทำเช่นนั้นด้วยวิธีที่เพิ่มลงในโค้ดเท่านั้น (ดังนั้นฉันจึงไม่ส่งผลกระทบต่อพฤติกรรมที่มีอยู่หรือพลาดข้อยกเว้นที่ถูกจับได้ในระหว่างการดำเนินการ) [ CtrlCคือ SIGINT หรือ SystemExit ซึ่งดูเหมือนจะเทียบเท่ากับSignalException.new("INT")ในระบบการจัดการข้อยกเว้นของ Ruby class SignalException < Exceptionซึ่งเป็นสาเหตุที่ทำให้เกิดปัญหานี้] รหัสที่ฉันต้องการเขียนคือ: begin #dosomething rescue SignalException => e raise e rescue Exception => e #halt the exception's progress end แก้ไข: รหัสนี้ใช้งานได้ตราบเท่าที่คุณได้รับคลาสของข้อยกเว้นที่คุณต้องการดักจับถูกต้อง นั่นคือ …
107
ruby
exception
copy-paste