У меня проблема, аналогичная этому другому посту , и я попробовал данные решения, но безрезультатно.
Мой проект - бот Ruby, который использует библиотеку Blather для подключения к серверу Jabber. Проблема в том, что когда возникает проблема с сервером, и Blather генерирует исключение, вся программа завершается, и у меня нет возможности перехватить исключение.
Вот простой код, который показывает проблему. На localhost не работает Jabber-сервер, поэтому клиент Blather генерирует исключение. У меня сложилось впечатление, что EM.error_handler {} сможет его перехватить, но я никогда не вижу сообщения **** ERROR
, и программа просто останавливается. (
#!/usr/bin/env ruby
require 'rubygems'
require 'blather/client/client'
EM.run do
EM.error_handler { puts " **** ERROR " }
Blather::Stream::Client.start(
Class.new {
}.new, 'echo@127.0.0.1', 'echo')
end
Думаю, проблема в том, что Blather также использует EventMachine и, возможно, вызывает EM.stop, что приводит к остановке внешнего экземпляра EM.