如何在eventmachine中捕获异常

时间:2012-11-24 14:09:16

标签: ruby exception eventmachine

我正在使用带有ruby 1.9.3的eventmachine 1.0.0。现在当发生异常时,它会被默默地忽略。反应堆继续运行,没有输出。当然,我没有任何可以捕获异常的自定义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

1 个答案:

答案 0 :(得分:0)

看看this thread on error_handler use。如果代码中出现异常,则事件循环终止。这可能是没有调用error_handler`的原因。它主要用于将C级错误传递给Ruby。