Поиск:

Ответ в темуСоздание новой темы Создание опроса
> On error break, Как аварийно не завершать программу 
:(
    Опции темы
segods
  Дата 26.2.2008, 01:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 14.2.2008

Репутация: нет
Всего: нет



Прога обращается к серверам в сети, если они не доступны, долго ждет, а потом вылетает с ошибкой.
Нужно что бы в таком случае вместо вылета программы, просто прекращалось выполнение функции(типа on error break), и выподнялось следущее действие.

И еще как поменять timeout, очень он большой по умолчанию.
Для работы с сетью юзаю:
Код

    @dir="/" if @dir.empty?
    h = Net::HTTP.new @host,80
    resp,@data=h.get @dir+@page,nil
    rescue=>err;puts "Error: #{err}  #{host+dir+page}";
    unless resp.code=="200"; return; end


Кто сталкивался с подобной ситуацией или просто хорошо шарит в Ruby посовейтуте что над прописать?...
PM MAIL   Вверх
segods
Дата 27.2.2008, 20:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 14.2.2008

Репутация: нет
Всего: нет



Такой форум умный, а никто помочь не может....

Заключение h = Net::HTTP.new @host,80 в if не помогает. Да, он перестает вылетать от ошибок в DNS-именах и доступности серверов.
Но если сервер ответит криво то все равно вылетает....
PM MAIL   Вверх
avsej
Дата 11.7.2008, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 12.11.2007

Репутация: нет
Всего: нет



Что значит вылетает? Этот пример завершает свою работу после четырех неудачных попыток

Код

require 'open-uri'

host = 'www.google.com'
dir = 'codesearch'

uri = "http://#{host}/#{dir}"

puts "Connecting to #{uri}"

tries = 0       # How many times have we tried to read the URL
begin           # This is where a retry begins
  tries += 1    # Try to print out the contents of a URL
  open(uri) {|f| puts f.readlines }
rescue OpenURI::HTTPError => e  # If we get an HTTP error
  puts e.message                # Print the error message
  if (tries < 4)                # If we haven't tried 4 times yet...
    sleep(2**tries)             # Wait for 2, 4, or 8 seconds
    retry                       # And then try again!
  end
end


Пример из книги
  The Ruby Programming Language 
  by David Flanagan; Yukihiro Matsumoto 
  Publisher: O'Reilly 
  Pub Date: January 15, 2008 
  Print ISBN-10: 0-596-51617-7 
  Print ISBN-13: 978-0-59-651617-8 
 

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Ruby: Общие вопросы"
source777
  • С чего начать? начинаем
  • Ссылки на полезные ресурсы смотрим тут
  • Обязательно следуйте правилам Vingrad.
  • Пожалуйста, прочитайте рекомендации по работе в форуме и навигации по Vingrad.
  • Для вставки кодов Ruby используйте тег: [code=ruby]код[/code]. Когда в будущем подсветка синтаксиса для Ruby будет реализована, весь исходных код преобразится.
  • Используйтe чекбокс "Транслит" (возле кнопок кодов), если у Вас нет русских шрифтов.
  • Помните, для каждого вопроса должна быть своя тема.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, source777.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Ruby: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0615 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.