3

我将 eventmachine 1.0.0 与 ruby​​ 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
4

1 回答 1

0

看看这个线程上的error_handler使用。如果您的代码出现异常,则事件循环终止。这可能是没有调用 error_handler 的原因。它主要用于将 C 级错误传达给 Ruby。

于 2013-07-31T03:36:57.250 回答