[#6363] Re: rescue clause affecting IO loop behavior — ts <decoux@...>

>>>>> "D" == David Alan Black <dblack@candle.superlink.net> writes:

17 messages 2000/11/14
[#6367] Re: rescue clause affecting IO loop behavior — David Alan Black <dblack@...> 2000/11/14

Hello again --

[#6582] best way to interleaf arrays? — David Alan Black <dblack@...>

Hello --

15 messages 2000/11/26

[#6646] RE: Array Intersect (&) question — Aleksi Niemel<aleksi.niemela@...>

Ross asked something about widely known and largely ignored language (on

23 messages 2000/11/29
[#6652] RE: Array Intersect (&) question — rpmohn@... (Ross Mohn) 2000/11/29

aleksi.niemela@cinnober.com (Aleksi Niemel) wrote in

[#6723] Re: Array Intersect (&) question — Mathieu Bouchard <matju@...> 2000/12/01

> >Use a hash. Here's code to do both and more. It assumes that

[#6656] printing/accessing arrays and hashes — raja@... (Raja S.)

I'm coming to Ruby with a Python & Common Lisp background.

24 messages 2000/11/30

[ruby-talk:6354] rescue clause affecting IO loop behavior

From: David Alan Black <dblack@...>
Date: 2000-11-14 10:16:28 UTC
List: ruby-talk #6354
Hello -

My goal here is to implement and use the method String#is_end? to test
for a match on the pattern /END/.  It works fine, until I add a rescue
clause to the block that's reading from the file.

Specifically, given this:

   class String
     def is_end?
       /END/.match self
     end
   end

I find that this works as expected:

   def one
     fh = File.open("roster")
     begin
       line = fh.readline
     end until line.is_end?
     fh.close
     puts "one: reached END"
   end

but this does not:

   def two
     fh = File.open("roster")
     begin
       line = fh.readline
     rescue
       puts $! + " while looking for END"
       exit
     end until line.is_end?
     fh.close
     puts "two: reached END"
   end

Output of running one and two:

   one: reached END
   end.rb:25:in `two': undefined method `is_end?' for nil (NameError)
	   from end.rb:31

I can't work out why adding a rescue clause would result in this
change.  And it does seem to involve String#is_end? -- if I use
line =~ /END/ instead, both methods work.

Thanks for any help --


David

-- 
David Alan Black
home: dblack@candle.superlink.net
work: blackdav@shu.edu
Web:  http://pirate.shu.edu/~blackdav


In This Thread

Prev Next