Rails: исключения против условных операторов - PullRequest
1 голос
/ 09 ноября 2010

У меня есть приложение Rails, которое запрашивает сторонний веб-сервис. Я пытаюсь решить, как обрабатывать неправильный ответ (например, служба недоступна).

Два варианта, которые я рассматриваю:

1) WebService возвращает ноль при ошибке

response = WebService.query
if response
  # Query was successful
else
  # Invalid response
end

2) WebService создает исключение при ошибке

begin
  response = WebService.query
rescue
  # Invalid response
end
# Query was successful

Каковы преимущества и недостатки каждого подхода? Какой из них является «рельсовым путем»?

Большое спасибо.

1 Ответ

4 голосов
/ 09 ноября 2010

Условные операторы обычно быстрее исключений.См. Насколько медленными являются (Ruby) исключения?

Дело в том, что исключения и условные выражения имеют разное значение.Вы используете исключения, когда не ожидаете, что что-то не получится, и когда возникает ошибка, это исключительное событие.Напротив, условные операторы управляют потоком.Это то же самое понятие, выраженное в этом посте от Thoughtbot .

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