2012-11-24 4 views
3

나는 이벤트 머신 1.0.0을 루비 1.9.3과 함께 사용하고있다. 이제 예외가 발생하면 무시됩니다. 반응기가 계속 작동하고 아무 것도 출력되지 않습니다. 물론 예외를 잡는 커스텀 rescue 커맨드가 없습니다.이벤트 머신에서 예외를 잡는 방법

이것은 원자로를 시작하는 방법입니다. 하지만 내 error_handler

EventMachine::run do 
    EventMachine.error_handler do |e| 
     $stderr.puts "Exception during event: #{e.message} (#{e.class})" 
     $stderr.puts (e.backtrace || [])[0..10].join("\n") 
    end 

    puts "Starting ftp server on port 21" 
    EventMachine::start_server("0.0.0.0", 21, self) 
    end 
+0

eventmachine에 대해서는 잘 모르겠지만 작성한 하위 스레드에서 실행되는 경우가 있습니다. 그리고 하위 스레드에서 발생한 오류는 주 스레드에서 보이지 않습니다. 그것을 볼 수 있습니다. 그 스레드 내에서 오류를'구조 '하고 오류를 처리해야합니다. 어쩌면 당신은'EventMachine.run do' 내부에'begin' ...'rescue' ...'end'를 넣을 수 있습니다. . 끝. 그리고 당신이 전자를 잡을 수 있는지 보아라. 거기에 반란군. – sawa

+0

유사한 질문 찾기 : http://stackoverflow.com/questions/8416349/how-do-you-catch-exceptions-in-an-eventmachine-implementation – Shtirlic

답변

0

this thread on error_handler use에서 봐 :-(... 호출되지 없구요. 예외가 당신의 코드를 통해 오는 경우 이벤트 루프가 종료됩니다. 즉, error_handler`가 호출되지 않는 이유가 될 수 있습니다.

관련 문제