나는 오래 실행되는 레거시 루비 프로그램을 통과했습니다.
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
편집 :이 코드는 올바르게 트랩하려는 예외의 클래스를 얻는 한 작동합니다. SystemExit, Interrupt 또는 IRB :: Abort는 아래와 같습니다.