Ruby Open-URI library aborted in 404 HTTP error code

Sergey Blohin picture Sergey Blohin · Nov 9, 2012 · Viewed 16.3k times · Source

I use OpenURI library.

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

If http://example.com server code response is equals to 200 my program acts as I expected. But if http://example.com server response code is equals to 400 (or other) then script aborts with OpenURI::HTTPError: 404 Not Found.
I can avoid this if I use 'begin-rescue' construction and handle 'HTTPError exception'.
Is this a correct way? Should I use Net/Http library instead of OpenURI to handle all cases?

Answer

Gregory Brown picture Gregory Brown · Nov 9, 2012

Rescuing the OpenURI::HTTPError is perfectly reasonable. See this related answer: https://stackoverflow.com/a/7495389/289274

But if you would rather not deal with exception handling, here's how you can do it with Net::HTTP: https://stackoverflow.com/a/2797443/289274