как заставить мое приложение rails 3 обрабатывать исключения при доступе к удаленным данным - PullRequest
0 голосов
/ 17 марта 2011

в нескольких местах в моем текущем коде я делаю это (или что-то вроде этого, например, для проверки файла на Amazon S3):

def
  success_flag = open(the_url, "UserAgent" => "Ruby-OpenURI").read
  ... do something else...
  return success_flag
end

если open () или read () завершаются неудачно по ЛЮБОЙ причине, я хочу корректно вернуть false, а не выдавать исключение. Например, если приложение работает локально и отсутствует подключение к Интернету, я не хочу, чтобы приложение выдавало исключение «хост недоступен»

Я предполагаю, что хочу использовать метод begin / do / rescue, но я не уверен, как это сделать, и, в частности, я не уверен, нужно ли мне отделять «open» от «read» в Для того, чтобы можно было поймать обе ошибки. Например, если я оставлю open (url) .read и open - это то, что не получится, поймает ли это начало / do / rescue, или будет сгенерировано исключение, если «open» завершится неудачно, потому что применяется begin / do / rescue только читать?

1 Ответ

2 голосов
/ 17 марта 2011

Абсолютно верно, поймать Исключение через начало / спасение / конец, например:

def
  begin
    success_flag = open(the_url, "UserAgent" => "Ruby-OpenURI").read
    ... do something else...
    return success_flag
  rescue Exception => e
    # log(e) here, maybe?
    return false
  end
end

Это поймает любое исключение, выброшенное в блоке начало / спасение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...