3

私はeventmachine1.0.0とruby1.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
4

1 に答える 1

0

使用については、このスレッドをerror_handlerご覧ください。コードで例外が発生すると、イベント ループは終了します。それが error_handler` が呼び出されない理由かもしれません。主に C レベルのエラーを Ruby に伝えるためのものです。

于 2013-07-31T03:36:57.250 に答える