[Ruby] resolv.rb -- всё хорошо ?

Yuri Kozlov kozlov.y на gmail.com
Пн Май 8 16:42:44 MSD 2006


Привет всем.

Пытался применить данную библиотеку и получилось вот что:
require 'resolv'
#Thread.abort_on_exception = true
begin
  @dns  = Resolv::DNS.new({:nameserver=>['127.0.0.1'],})
  @dns.getresource('xxxxxxxxx', Resolv::DNS::Resource::IN::A)
  puts 'very good'
rescue Errno::ECONNREFUSED
  puts 'service not started'
rescue Resolv::ResolvError
  puts "DNS service have a problem"
rescue =>r
  p r
end
puts 'After dark'

DNS сервер выключен.(так и задумано)
yuray на keeper:~/d$ ruby re.rb
service not started
After dark
yuray на keeper:~/d$

Убираем комментарий с
Thread.abort_on_exception = true

yuray на keeper:~/d$ ruby re.rb
/usr/lib/ruby/1.8/resolv.rb:631:in `recv': Connection refused -
recvfrom(2) (Errno::ECONNREFUSED)
        from /usr/lib/ruby/1.8/resolv.rb:631:in `initialize'
        from /usr/lib/ruby/1.8/resolv.rb:630:in `initialize'
        from /usr/lib/ruby/1.8/resolv.rb:628:in `initialize'
        from /usr/lib/ruby/1.8/resolv.rb:393:in `lazy_initialize'
        from /usr/lib/ruby/1.8/thread.rb:135:in `synchronize'
        from /usr/lib/ruby/1.8/resolv.rb:388:in `lazy_initialize'
        from /usr/lib/ruby/1.8/resolv.rb:466:in `each_resource'
        from /usr/lib/ruby/1.8/resolv.rb:455:in `getresource'
        from re.rb:7
yuray на keeper:~/d$

Как видим, библиотека не ловит исключение и и вся моя
программа дохнет при включении отладки.

Вопрос: это нормальное поведение библиотек в ruby ?
Или это я что-то не так использовал ?

--
Regards,
Yuri Kozlov


Подробная информация о списке рассылки Ruby