# Exception from open-uri

**URL:** <https://www.ruby-forum.com/t/exception-from-open-uri/176616>\
**Category:** Development\
**Created:** [October 3, 2009, 8:19am UTC](https://www.ruby-forum.com/t/exception-from-open-uri/176616 "2009-10-03T08:19:37Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Yusuke\_ENDOH](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/y/c89c15/32.png) [@Yusuke\_ENDOH](https://www.ruby-forum.com/u/Yusuke_ENDOH)\
**Post date:** [October 3, 2009, 8:19am UTC](https://www.ruby-forum.com/t/exception-from-open-uri/176616/1 "2009-10-03T08:19:37Z")

</div>

e$B1sF#$G$9!#e(B

open-uri e$B$r;H$C$FDj4|E\*$Ke(B Web  
e$B%Z!\<%8$r\<hF@$9$k%W%m%0%i%`$rAv$i$;$Fe(B  
e$B$$$k$H!"\<B$K$5$^$6$^$JNc30$,Ej$2$i$l$&$k$3$H$K5$$,$D$-$^$7$?!#e(B

e$B:#$N$H$3$m7P83$7$?$3$H$,$"$k$N$O0J2\<$Ne(B 7 e$B$D$G$9e(B  
(e$B7P83$7$?=ge(B) e$B!#e(B

- Errno::ETIMEDOUT
- OpenURI::HTTPError
- Errno::ECONNRESET
- Timeout::Error
- EOFError
- Errno::EHOSTUNREACH
- SocketError

e$B$=$3$G\<ALd$G$9!#e(B

1. open-uri e$B$,Ej$2$&$kNc30$OB\>$K$"$k$G$7$g$&$+e(B (Errno::\*  
e$B$O$$$/$i$G$be(B  
e$B$"$j$=$&$G$9$,e(B) e$B!#e(B

2. e$B$3$NCf$GK\MhEj$2$i$l$k$Y$-$G$J$$Nc30$O$J$$$G$7$g$&$+!#e(BEOFError  
e$B$Oe(B  
e$B\>/$72x$7$$$H;W$C$F$$$^$9!#%P%0$@$H$7$F$be(B Net::HTTP e$B$+e(B  
Timeout e$B$N%P%0e(B  
e$B$@$H;W$$$^$9$,!#$A$J$\_$K:F8=$5$;$kJ}K!$O$b$A$m$s$o$+$j$^$;$s!#e(B

3. e$B$3$N\>u67$KBP$7$F!"e(Bopen-uri  
e$B$N%f!\<%6$O$I$N$h$&$KBP=h$9$k$3$H$,MW5ae(B  
e$B$5$l$F$$$k$N$G$7$g$&$+!#e(B4 e$B$D;W$$$D$-$^$7$?!#e(B

A. StandardError e$B$re(B rescue e$B$7$F$^$H$a$FBP=h$9$ke(B

B. open-uri  
e$B$,Ej$2$&$kNc30$r$9$Y$FGD0.$7!"8D!9$KBP=h$9$k%3!\<%I$r=q$/e(B

C. e$B$=$b$=$be(B robust e$B@-$,MW5a$5$l$k%W%m%0%i%`$Ge(B open-uri  
e$B$de(B Net::HTTP  
e$B$r;H$&$3$H$,A[Dj$5$l$F$$$J$$$N$G!";H$C$F$O$$$1$J$$e(B

D. e$B$=$b$=$be(B robust e$B@-$,MW5a$5$l$k%W%m%0%i%`$Ge(B Ruby  
e$B$re(B (e$BN,e(B)

ruby 1.8.7 (2008-08-11 patchlevel 72) [i486-linux]  
e$B$G?=$7Lu$J$$$N$G$9e(B  
e$B$,!"$=$l$\>$l$NNc30$,Ej$2$i$l$?$H$-$N%H%l!\<%9$r0J2\<$KE=$jIU$1$^$9!#e(B

/usr/lib/ruby/1.8/net/http.rb:560:in `initialize': Connection timed out - connect(2) (Errno::ETIMEDOUT) from /usr/lib/ruby/1.8/net/http.rb:560:in`open’  
from /usr/lib/ruby/1.8/net/http.rb:560:in `connect' from /usr/lib/ruby/1.8/timeout.rb:53:in`timeout’  
from /usr/lib/ruby/1.8/timeout.rb:93:in `timeout' from /usr/lib/ruby/1.8/net/http.rb:560:in`connect’  
from /usr/lib/ruby/1.8/net/http.rb:553:in `do_start' from /usr/lib/ruby/1.8/net/http.rb:542:in`start’  
from /usr/lib/ruby/1.8/open-uri.rb:242:in `open_http' from /usr/lib/ruby/1.8/open-uri.rb:616:in`buffer\_open’  
from /usr/lib/ruby/1.8/open-uri.rb:164:in `open_loop' from /usr/lib/ruby/1.8/open-uri.rb:162:in`catch’  
from /usr/lib/ruby/1.8/open-uri.rb:162:in `open_loop' from /usr/lib/ruby/1.8/open-uri.rb:132:in`open\_uri’  
from /usr/lib/ruby/1.8/open-uri.rb:518:in `open' from /usr/lib/ruby/1.8/open-uri.rb:30:in`open’

/usr/lib/ruby/1.8/open-uri.rb:277:in `open_http': 400 Bad Request (OpenURI::HTTPError) from /usr/lib/ruby/1.8/open-uri.rb:616:in`buffer\_open’  
from /usr/lib/ruby/1.8/open-uri.rb:164:in `open_loop' from /usr/lib/ruby/1.8/open-uri.rb:162:in`catch’  
from /usr/lib/ruby/1.8/open-uri.rb:162:in `open_loop' from /usr/lib/ruby/1.8/open-uri.rb:132:in`open\_uri’  
from /usr/lib/ruby/1.8/open-uri.rb:518:in `open' from /usr/lib/ruby/1.8/open-uri.rb:30:in`open’

/usr/lib/ruby/1.8/net/protocol.rb:135:in `sysread': Connection reset by peer (Errno::ECONNRESET) from /usr/lib/ruby/1.8/net/protocol.rb:135:in`rbuf\_fill’  
from /usr/lib/ruby/1.8/timeout.rb:62:in `timeout' from /usr/lib/ruby/1.8/timeout.rb:93:in`timeout’  
from /usr/lib/ruby/1.8/net/protocol.rb:134:in `rbuf_fill' from /usr/lib/ruby/1.8/net/protocol.rb:116:in`readuntil’  
from /usr/lib/ruby/1.8/net/protocol.rb:126:in `readline' from /usr/lib/ruby/1.8/net/http.rb:2020:in`read\_status\_line’  
from /usr/lib/ruby/1.8/net/http.rb:2009:in `read_new' from /usr/lib/ruby/1.8/net/http.rb:1050:in`request’  
from /usr/lib/ruby/1.8/open-uri.rb:248:in `open_http' from /usr/lib/ruby/1.8/net/http.rb:543:in`start’  
from /usr/lib/ruby/1.8/open-uri.rb:242:in `open_http' from /usr/lib/ruby/1.8/open-uri.rb:616:in`buffer\_open’  
from /usr/lib/ruby/1.8/open-uri.rb:164:in `open_loop' from /usr/lib/ruby/1.8/open-uri.rb:162:in`catch’  
from /usr/lib/ruby/1.8/open-uri.rb:162:in `open_loop' from /usr/lib/ruby/1.8/open-uri.rb:132:in`open\_uri’  
from /usr/lib/ruby/1.8/open-uri.rb:518:in `open' from /usr/lib/ruby/1.8/open-uri.rb:30:in`open’

/usr/lib/ruby/1.8/timeout.rb:60:in `rbuf_fill': execution expired (Timeout::Error) from /usr/lib/ruby/1.8/net/protocol.rb:134:in`rbuf\_fill’  
from /usr/lib/ruby/1.8/net/protocol.rb:116:in `readuntil' from /usr/lib/ruby/1.8/net/protocol.rb:126:in`readline’  
from /usr/lib/ruby/1.8/net/http.rb:2020:in `read_status_line' from /usr/lib/ruby/1.8/net/http.rb:2009:in`read\_new’  
from /usr/lib/ruby/1.8/net/http.rb:1050:in `request' from /usr/lib/ruby/1.8/open-uri.rb:248:in`open\_http’  
from /usr/lib/ruby/1.8/net/http.rb:543:in `start' from /usr/lib/ruby/1.8/open-uri.rb:242:in`open\_http’  
from /usr/lib/ruby/1.8/open-uri.rb:616:in `buffer_open' from /usr/lib/ruby/1.8/open-uri.rb:164:in`open\_loop’  
from /usr/lib/ruby/1.8/open-uri.rb:162:in `catch' from /usr/lib/ruby/1.8/open-uri.rb:162:in`open\_loop’  
from /usr/lib/ruby/1.8/open-uri.rb:132:in `open_uri' from /usr/lib/ruby/1.8/open-uri.rb:518:in`open’  
from /usr/lib/ruby/1.8/open-uri.rb:30:in `open’

/usr/lib/ruby/1.8/net/protocol.rb:135:in `sysread': end of file reached (EOFError) from /usr/lib/ruby/1.8/net/protocol.rb:135:in`rbuf\_fill’  
from /usr/lib/ruby/1.8/timeout.rb:62:in `timeout' from /usr/lib/ruby/1.8/timeout.rb:93:in`timeout’  
from /usr/lib/ruby/1.8/net/protocol.rb:134:in `rbuf_fill' from /usr/lib/ruby/1.8/net/protocol.rb:116:in`readuntil’  
from /usr/lib/ruby/1.8/net/protocol.rb:126:in `readline' from /usr/lib/ruby/1.8/net/http.rb:2020:in`read\_status\_line’  
from /usr/lib/ruby/1.8/net/http.rb:2009:in `read_new' from /usr/lib/ruby/1.8/net/http.rb:1050:in`request’  
from /usr/lib/ruby/1.8/open-uri.rb:248:in `open_http' from /usr/lib/ruby/1.8/net/http.rb:543:in`start’  
from /usr/lib/ruby/1.8/open-uri.rb:242:in `open_http' from /usr/lib/ruby/1.8/open-uri.rb:616:in`buffer\_open’  
from /usr/lib/ruby/1.8/open-uri.rb:164:in `open_loop' from /usr/lib/ruby/1.8/open-uri.rb:162:in`catch’  
from /usr/lib/ruby/1.8/open-uri.rb:162:in `open_loop' from /usr/lib/ruby/1.8/open-uri.rb:132:in`open\_uri’  
from /usr/lib/ruby/1.8/open-uri.rb:518:in `open' from /usr/lib/ruby/1.8/open-uri.rb:30:in`open’

/usr/lib/ruby/1.8/net/http.rb:560:in `initialize': No route to host - connect(2) (Errno::EHOSTUNREACH) from /usr/lib/ruby/1.8/net/http.rb:560:in`open’  
from /usr/lib/ruby/1.8/net/http.rb:560:in `connect' from /usr/lib/ruby/1.8/timeout.rb:53:in`timeout’  
from /usr/lib/ruby/1.8/timeout.rb:93:in `timeout' from /usr/lib/ruby/1.8/net/http.rb:560:in`connect’  
from /usr/lib/ruby/1.8/net/http.rb:553:in `do_start' from /usr/lib/ruby/1.8/net/http.rb:542:in`start’  
from /usr/lib/ruby/1.8/open-uri.rb:242:in `open_http' from /usr/lib/ruby/1.8/open-uri.rb:616:in`buffer\_open’  
from /usr/lib/ruby/1.8/open-uri.rb:164:in `open_loop' from /usr/lib/ruby/1.8/open-uri.rb:162:in`catch’  
from /usr/lib/ruby/1.8/open-uri.rb:162:in `open_loop' from /usr/lib/ruby/1.8/open-uri.rb:132:in`open\_uri’  
from /usr/lib/ruby/1.8/open-uri.rb:518:in `open' from /usr/lib/ruby/1.8/open-uri.rb:30:in`open’

/usr/lib/ruby/1.8/net/http.rb:560:in `initialize': getaddrinfo: Temporary failure in name resolution (SocketError) from /usr/lib/ruby/1.8/net/http.rb:560:in`open’  
from /usr/lib/ruby/1.8/net/http.rb:560:in `connect' from /usr/lib/ruby/1.8/timeout.rb:53:in`timeout’  
from /usr/lib/ruby/1.8/timeout.rb:93:in `timeout' from /usr/lib/ruby/1.8/net/http.rb:560:in`connect’  
from /usr/lib/ruby/1.8/net/http.rb:553:in `do_start' from /usr/lib/ruby/1.8/net/http.rb:542:in`start’  
from /usr/lib/ruby/1.8/open-uri.rb:242:in `open_http' from /usr/lib/ruby/1.8/open-uri.rb:616:in`buffer\_open’  
from /usr/lib/ruby/1.8/open-uri.rb:164:in `open_loop' from /usr/lib/ruby/1.8/open-uri.rb:162:in`catch’  
from /usr/lib/ruby/1.8/open-uri.rb:162:in `open_loop' from /usr/lib/ruby/1.8/open-uri.rb:132:in`open\_uri’  
from /usr/lib/ruby/1.8/open-uri.rb:518:in `open' from /usr/lib/ruby/1.8/open-uri.rb:30:in`open’

---

<div class="post-metadata">

**Author:** ![Yusuke\_ENDOH](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/y/c89c15/32.png) [@Yusuke\_ENDOH](https://www.ruby-forum.com/u/Yusuke_ENDOH)\
**Post date:** [October 3, 2009, 8:49am UTC](https://www.ruby-forum.com/t/exception-from-open-uri/176616/2 "2009-10-03T08:49:28Z")

</div>

In article [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid),  
Yusuke ENDOH [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) writes:

> open-uri e$B$r;H$C$FDj4|E\*$Ke(B Web e$B%Z!\<%8$r\<hF@$9$k%W%m%0%i%`$rAv$i$;$Fe(B  
> e$B$$$k$H!"\<B$K$5$^$6$^$JNc30$,Ej$2$i$l$&$k$3$H$K5$$,$D$-$^$7$?!#e(B

e$B4q6x$J$3$H$K!";d$b;w$?$h$&$J$3$H$r$d$C$F$$$^$9!#e(B  
samidare e$B$H$$$&%W%m%0%i%`$G$9$,!#e(B

> 1. open-uri e$B$,Ej$2$&$kNc30$OB\>$K$“$k$G$7$g$&$+e(B (Errno::\* e$B$O$$$/$i$G$be(B  
> e$B$”$j$=$&$G$9$,e(B) e$B!#e(B

e$B;d$,$d$C$F$$$k$b$N$N%m%0$r$$$^$7$i$Y$?$i!“$H$j$”$($:!“$”$2$ie(B  
e$B$l$F$$$k0J30$Ke(B

Errno::ECONNREFUSED  
Errno::ENETUNREACH

e$B$,8+$D$+$j$^$7$?!#e(B

> 1. e$B$3$NCf$GK\MhEj$2$i$l$k$Y$-$G$J$$Nc30$O$J$$$G$7$g$&$+!#e(BEOFError e$B$Oe(B  
> e$B\>/$72x$7$$$H;W$C$F$$$^$9!#%P%0$@$H$7$F$be(B Net::HTTP e$B$+e(B Timeout e$B$N%P%0e(B  
> e$B$@$H;W$$$^$9$,!#$A$J$\_$K:F8=$5$;$kJ}K!$O$b$A$m$s$o$+$j$^$;$s!#e(B

EOFError e$B$O0JA0$J$K$+$N0{$\_2q$G@DLZ$5$s$KJ86g$r8@$C$?3P$($,e(B  
e$B$"$j$^$9!#e(B

> 1. e$B$3$N\>u67$KBP$7$F!"e(Bopen-uri e$B$N%f!\<%6$O$I$N$h$&$KBP=h$9$k$3$H$,MW5ae(B  
> e$B$5$l$F$$$k$N$G$7$g$&$+!#e(B4 e$B$D;W$$$D$-$^$7$?!#e(B
> 
> A. StandardError e$B$re(B rescue e$B$7$F$^$H$a$FBP=h$9$ke(B

e$B;d$,$d$C$F$$$k$b$N$r$\_$?$i!"$3$l$G$7$?!#e(B

---

<div class="post-metadata">

**Author:** ![Yusuke\_ENDOH](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/y/c89c15/32.png) [@Yusuke\_ENDOH](https://www.ruby-forum.com/u/Yusuke_ENDOH)\
**Post date:** [October 3, 2009, 2:06pm UTC](https://www.ruby-forum.com/t/exception-from-open-uri/176616/3 "2009-10-03T14:06:12Z")

</div>

In article  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid),  
Yusuke ENDOH [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) writes:

> > > A. StandardError e$B$re(B rescue e$B$7$F$^$H$a$FBP=h$9$ke(B
> > 
> > e$B;d$,$d$C$F$$$k$b$N$r$\_$?$i!"$3$l$G$7$?!#e(B
> 
> e$B!Ve(Bopen-uri e$B$r;H$&$H$-$Oe(B rescue StandardError e$B$G$/$k$`!W$H$$$&e(B e$B%$%G%#%*%`$,?d\>)$5$l$k$o$1$G$9$+$M!#e(B

e$BJL$K?d\>)$7$F$$$k$o$1$G$O$"$j$^$;$s!#e(B

> e$B$7$+$7e(B open e$B$r%V%m%C%/IU$-$G;H$&$3$H$r9M$($k$H!"$=$l$O\>/$7ITJX$G$9!#e(B

e$BF05!$O$o$+$j$^$9!#e(B

> e$B$=$3$GDs0F$G$9$,!"e(Bopen-uri e$B$NFbIt$GH/@8$7$?Nc30$Oe(B open-uri e$B$NCf$Ge(B  
> e$B$9$Y$F=&$C$F!"e(BOpenURI::Error e$B$J$I$H8@$C$?L\>A0$NNc30$K$/$k$s$GEj$2e(B  
> e$B$J$\*$9$H$$$&$N$O$I$&$G$7$g$&$+!#e(B  
> e$B%f!\<%6$Oe(B OpenURI::Error e$B$@$1$r=&$($P$$$$$H$$$&$3$H$K$J$C$F!"5$3Ze(B  
> e$B$G$9!#e(B

e$B$3$NLdBj$Oe(B open-uri e$B8GM-$NLdBj$K$O8+$($^$;$s!#e(B

e$B$D$^$j%V%m%C%/$D$-%a%=%C%I$NF~$l;R9=B$$HNc30JaB\*$N$?$a$NF~$le(B  
e$B;R9=B$$,0[$J$k$H$$$&LdBj$J$N$G!"$h$j0lHLE\*$J2r$,K\>$^$l$k$h$&e(B  
e$B$K;W$$$^$9!#e(B

open-uri e$B$H$7$F$N2r7hK!$O!“8=;~E@$G$O!”%V%m%C%/$r$D$1$J$$$Ge(B  
e$B;H$&$N$,$$$$$N$G$O$J$$$+$H;W$$$^$9!#e(B

e$BBP\>]$,Bg$-$/$J$1$l$P!"e(BURI#read e$B$,$\*A&$a$G$9!#e(B  
(samidare e$B$O$=$&$7$F$$$^$9e(B)

e$B$“$k$$$O!”$I$&$7$F$b%V%m%C%/$r;H$$$?$1$l$P!";n$7$F$^$;$s$,%Ue(B  
e$B%i%0$r;H$&$N$O$I$&$G$7$g$&$+!#e(B

done = false  
begin  
open(uri) {|f|  
done = true  
…  
}  
rescue StandardError  
raise if done  
…  
end

---

<div class="post-metadata">

**Author:** ![Yusuke\_ENDOH](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/y/c89c15/32.png) [@Yusuke\_ENDOH](https://www.ruby-forum.com/u/Yusuke_ENDOH)\
**Post date:** [October 3, 2009, 2:27pm UTC](https://www.ruby-forum.com/t/exception-from-open-uri/176616/4 "2009-10-03T14:27:51Z")

</div>

e$B1sF#$G$9!#e(B

2009e$BG/e(B10e$B7ne(B3e$BF|e(B21:05 Tanaka A. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> > e$B$=$3$GDs0F$G$9$,!"e(Bopen-uri e$B$NFbIt$GH/@8$7$?Nc30$Oe(B open-uri e$B$NCf$Ge(B  
> > e$B$9$Y$F=&$C$F!"e(BOpenURI::Error e$B$J$I$H8@$C$?L\>A0$NNc30$K$/$k$s$GEj$2e(B  
> > e$B$J$\*$9$H$$$&$N$O$I$&$G$7$g$&$+!#e(B  
> > e$B%f!\<%6$Oe(B OpenURI::Error e$B$@$1$r=&$($P$$$$$H$$$&$3$H$K$J$C$F!"5$3Ze(B  
> > e$B$G$9!#e(B
> 
> e$B$3$NLdBj$Oe(B open-uri e$B8GM-$NLdBj$K$O8+$($^$;$s!#e(B

e$B$=$NDL$j$G$9!#%a!\<%k$rAw$C$?D\>8e$K5$$,$D$-$^$7$?$,!"e(Bopen-uri  
e$B$Oe(B  
e$B;HMQIQEY$N$o$j$KNc30$,B?\<oB?MM$9$.$?$?$a$K:G=i$KL$KIU$$$?$@$1e(B  
e$B$G$7$?!#e(B

> e$B$D$^$j%V%m%C%/$D$-%a%=%C%I$NF~$l;R9=B$$HNc30JaB\*$N$?$a$NF~$le(B  
> e$B;R9=B$$,0[$J$k$H$$$&LdBj$J$N$G!"$h$j0lHLE\*$J2r$,K\>$^$l$k$h$&e(B  
> e$B$K;W$$$^$9!#e(B

e$B$&!\<$s!#$I$s$J$N$,9M$($i$l$k$G$7$g$&$M!#e(B

> open-uri e$B$H$7$F$N2r7hK!$O!“8=;~E@$G$O!”%V%m%C%/$r$D$1$J$$$Ge(B  
> e$B;H$&$N$,$$$$$N$G$O$J$$$+$H;W$$$^$9!#e(B
> 
> e$BBP\>]$,Bg$-$/$J$1$l$P!"e(BURI#read e$B$,$\*A&$a$G$9!#e(B  
> (samidare e$B$O$=$&$7$F$$$^$9e(B)

Kernel#open e$B$HF1$8$h$&$K;H$($k$H$$$&e(B open-uri e$B$N$“$j$,$?$\_$,e(B  
e$B$A$g$C$H8:$C$?5$$,$7$^$7$?$,!“e(BKernel#open e$B$K$b;w$?LdBj$O$”$ke(B  
e$B$o$1$G$9$M!#$H$j$”$($:N;2r$7$^$7$?!#e(B

> raise if done  
> …  
> end

e$B$&!\<$s!D!D!#e(Brescue e$B$K%,!\<%I$,=q$1$l$P$b$&\>/$79,$;$=$&!#e(B

---

<div class="post-metadata">

**Author:** ![Yusuke\_ENDOH](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/y/c89c15/32.png) [@Yusuke\_ENDOH](https://www.ruby-forum.com/u/Yusuke_ENDOH)\
**Post date:** [October 3, 2009, 2:02pm UTC](https://www.ruby-forum.com/t/exception-from-open-uri/176616/5 "2009-10-03T14:02:41Z")

</div>

e$B1sF#$G$9!#e(B

2009e$BG/e(B10e$B7ne(B3e$BF|e(B15:48 Tanaka A. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> In article [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid),  
> Yusuke ENDOH [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) writes:
> 
> > open-uri e$B$r;H$C$FDj4|E\*$Ke(B Web e$B%Z!\<%8$r\<hF@$9$k%W%m%0%i%`$rAv$i$;$Fe(B  
> > e$B$$$k$H!"\<B$K$5$^$6$^$JNc30$,Ej$2$i$l$&$k$3$H$K5$$,$D$-$^$7$?!#e(B
> 
> e$B4q6x$J$3$H$K!";d$b;w$?$h$&$J$3$H$r$d$C$F$$$^$9!#e(B  
> samidare e$B$H$$$&%W%m%0%i%`$G$9$,!#e(B

e$B$J$k$[$Ie(B (e$B\>Pe(B)

> > 1. open-uri e$B$,Ej$2$&$kNc30$OB\>$K$“$k$G$7$g$&$+e(B (Errno::\* e$B$O$$$/$i$G$be(B  
> > e$B$”$j$=$&$G$9$,e(B) e$B!#e(B
> 
> e$B;d$,$d$C$F$$$k$b$N$N%m%0$r$$$^$7$i$Y$?$i!“$H$j$”$($:!“$”$2$ie(B  
> e$B$l$F$$$k0J30$Ke(B
> 
> Errno::ECONNREFUSED  
> Errno::ENETUNREACH
> 
> e$B$,8+$D$+$j$^$7$?!#e(B

e$B$&$&!“$”$j$,$H$&$4$6$$$^$9!#$H$j$"$($:\<j85$G$bBP=h$7$F$\*$-$^$9!#e(B

> > 1. e$B$3$NCf$GK\MhEj$2$i$l$k$Y$-$G$J$$Nc30$O$J$$$G$7$g$&$+!#e(BEOFError e$B$Oe(B  
> > e$B\>/$72x$7$$$H;W$C$F$$$^$9!#%P%0$@$H$7$F$be(B Net::HTTP e$B$+e(B Timeout e$B$N%P%0e(B  
> > e$B$@$H;W$$$^$9$,!#$A$J$\_$K:F8=$5$;$kJ}K!$O$b$A$m$s$o$+$j$^$;$s!#e(B
> 
> EOFError e$B$O0JA0$J$K$+$N0{$\_2q$G@DLZ$5$s$KJ86g$r8@$C$?3P$($,e(B  
> e$B$"$j$^$9!#e(B

e$B$&!\<$s!"e(Bredmine e$B$KEPO?$9$Y$-$+!#e(B

> > 1. e$B$3$N\>u67$KBP$7$F!"e(Bopen-uri e$B$N%f!\<%6$O$I$N$h$&$KBP=h$9$k$3$H$,MW5ae(B  
> > e$B$5$l$F$$$k$N$G$7$g$&$+!#e(B4 e$B$D;W$$$D$-$^$7$?!#e(B
> > 
> > A. StandardError e$B$re(B rescue e$B$7$F$^$H$a$FBP=h$9$ke(B
> 
> e$B;d$,$d$C$F$$$k$b$N$r$\_$?$i!"$3$l$G$7$?!#e(B

e$B!Ve(Bopen-uri e$B$r;H$&$H$-$Oe(B rescue StandardError  
e$B$G$/$k$`!W$H$$$&e(B e$B%$%G%#%*%`$,?d\>)$5$l$k$o$1$G$9$+$M!#e(B

e$B$7$+$7e(B open  
e$B$r%V%m%C%/IU$-$G;H$&$3$H$r9M$($k$H!"$=$l$O\>/$7ITJX$G$9!#e(B

open(“http://…”) do |fh|  
… # (A)  
end

e$B$re(B

begin  
open(“http://…”) do |fh|  
… # (A)  
end  
rescue StandardError  
… # (B)  
end

e$B$H$7$?\>l9g!“e(B(A) e$B$NCf$GH/@8$7$?Nc30$,A4Ite(B (B)  
e$B$K=&$o$l$F$7$^$$$^$9!#e(B  
(A) e$B$NCf$K%P%0$,$”$C$FNc30$,Ej$2$i$l$?\>l9g$J$I$O!"e(B(B)  
e$B$G=&$o$:$K30$Ke(B  
e$BEj$2$FM\_$7$$$H;W$$$^$9!#e(B

e$B$=$3$GDs0F$G$9$,!"e(Bopen-uri e$B$NFbIt$GH/@8$7$?Nc30$Oe(B open-uri  
e$B$NCf$Ge(B  
e$B$9$Y$F=&$C$F!"e(BOpenURI::Error  
e$B$J$I$H8@$C$?L\>A0$NNc30$K$/$k$s$GEj$2e(B  
e$B$J$\*$9$H$$$&$N$O$I$&$G$7$g$&$+!#e(B  
e$B%f!\<%6$Oe(B OpenURI::Error  
e$B$@$1$r=&$($P$$$$$H$$$&$3$H$K$J$C$F!"5$3Ze(B  
e$B$G$9!#e(B
