Mir wurde ein langjähriges Legacy-Ruby-Programm übergeben, das zahlreiche Vorkommen hat
begin
#dosomething
rescue Exception => e
#halt the exception's progress
end
überall.
Ohne jede mögliche Ausnahme aufzuspüren, die diese behandeln könnten (zumindest nicht sofort), möchte ich sie trotzdem manchmal herunterfahren können CtrlC.
Und ich möchte dies auf eine Weise tun, die nur zum Code beiträgt (damit ich das vorhandene Verhalten nicht beeinträchtige oder eine ansonsten abgefangene Ausnahme während eines Laufs verpasse.)
[ CtrlCist SIGINT oder SystemExit, was SignalException.new("INT")
dem Ausnahmebehandlungssystem von Ruby zu entsprechen scheint . 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. Das ist entweder SystemExit, Interrupt oder IRB :: Abort wie unten.