2012-11-09 13 views
7

Używam biblioteki OpenURI.Biblioteka Open-URI Ruby przerwana w 404 kodzie błędu HTTP

object = open("http://example.com") 

Jeśli http://example.com odpowiedź kod serwera jest równa 200 mój program działa zgodnie z oczekiwaniami. Ale jeśli kod odpowiedzi serwera http://example.com jest równy 400 (lub inny), skrypt przerwie działanie z OpenURI :: HTTPError: 404 Not Found.
Mogę tego uniknąć, jeśli użyję konstrukcji "start-rescue" i obsłużę wyjątek "HTTPError".
Czy to jest poprawny sposób? Czy należy używać biblioteki Net/Http zamiast OpenURI do obsługi wszystkich przypadków?

Odpowiedz

6

Ratowanie OpenURI::HTTPError jest całkowicie uzasadnione. Zobacz ten związany odpowiedź: https://stackoverflow.com/a/7495389/289274

Ale jeśli wolisz nie radzić sobie z obsługi wyjątków, oto jak można to zrobić z Net::HTTP: https://stackoverflow.com/a/2797443/289274

+0

Niestety, to również wygląda 'OpenURI :: HTTPError' nie obejmuje wszelkie treści, które mogły zostać zwrócone z żądania (takie jak wyjaśnienie z serwera, poza kodem statusu). – maurice

Powiązane problemy