Erfassen von Strg-C in Ruby

Mir wurde ein lang laufendes altes Ruby-Programm übergeben, das zahlreiche Vorkommen von hat

begin
  #dosomething
rescue Exception => e
  #halt the exception's progress
end

während es.

Ohne jede einzelne mögliche Ausnahme aufzuspüren, die diese jeweils handhaben könnten (zumindest nicht sofort), möchte ich sie dennoch manchmal mit herunterfahren könnenStrgC.

Und ich möchte dies auf eine Art und Weise tun, die nur zum Code beiträgt (damit ich das vorhandene Verhalten nicht beeinträchtige oder eine ansonsten festgestellte Ausnahme mitten in einem Lauf verpasse.)

[StrgC ist SIGINT oder SystemExit, was äquivalent zu zu sein scheintSignalException.new("INT") in Rubys Ausnahmebehandlungssystem.class SignalException < Exception, weshalb dieses Problem auftritt.]

Der Code, den ich gerne geschrieben hätte, wäre:

begin
  #dosomething
rescue SignalException => e
  raise e
rescue Exception => e
  #halt the exception's progress
end

BEARBEITEN: Dieser Code funktioniert, solange Sie die Klasse der Ausnahme erhalten, die Sie korrekt abfangen möchten. Dies ist entweder SystemExit, Interrupt oder IRB :: Abort (siehe unten).

Antworten auf die Frage(5)

Ihre Antwort auf die Frage