From: matz@... (Yukihiro Matsumoto) Date: 2000-11-03T02:46:25+09:00 Subject: [ruby-talk:6017] Re: Exception handling Hi, In message "[ruby-talk:6012] Exception handling" on 00/11/03, David Suarez de Lis writes: |from the User's Manual: |http://www.math.sci.hokudai.ac.jp/~gotoken/ruby/ruby-uguide/uguide25.html | |ruby> begin |ruby| file = open("/tmp/some_file", "w") |ruby| # something to do |ruby| ensure |ruby| file.close |ruby| end | |Let's suppose /tmp/some_file does not exist: then I get, from the ensure part: | |NameError: undefined method `close' for nil | |Obviously, as open has failed in opening the file, 'file' references 'nil'... | |How do we cope with this kind of things? It should have been: file = open("/tmp/some_file", "w") begin # something to do ensure file.close end or even: open("/tmp/some_file", "w") do |file| # something to do end The user guide was written almost 5 years ago; and I was not an experienced Ruby programmer then ;-) |PS- The documentation is great, and the library reference is superb, |but many manuals, etc, are lagging behind the code... most are for |ruby 1.4... eg. I saw an 'include Singleton' somewhere to create a |singleton class, where in 1.4 that was done with 'class << |single'. Is there any updated documents like the Reference Manual for |1.4 updated? While I still love _The Pragmatic Programmer_ by Dave |and Andy, even after some 100 readings, at the current Euro rate, |getting the Ruby book is off the question by now... thn It's been in my todo list for long time; I wish I had two (or even more) individual souls. Maybe I should setup RWiki to build up-to-date references. matz.