Variables not recognized within Rescue in Ruby -


i have following code:

  rescue timeout::error, standarderror => e       puts "caught exception: #{e.message}".red       log.puts("#{e.backtrace}")       email_ids_all.each |email_delete|         call= "/api/v2/emails/#{email_delete}/"         ...... 

before rescue piece have defined log , email_ids_all. however, neither of these recognized within ruby script. if this:

 rescue timeout::error, standarderror => e     file.open(rescuelogfile, 'w') |log| #setup log write response codes.       puts "caught exception: #{e.message}".red       log.puts("#{e.backtrace}")       email_ids_all.each |email_delete|         call= "/api/v2/emails/#{email_delete}/"         .... 

log works fine, makes sense. take lot of writing redefine email_ids_all array , other variables contained inside rescue block.

is there anyway allow variables recognized inside rescue? code laid out this:

begin  #some code  rescue   #above code  end 

i using ruby 1.9.3.

edit----

log starts right after begin statement :

begin   file.open(logfile, 'w') |log| #setup log write response codes. 

log.puts works throughout entire code except when error thrown, , runs rescue script log not available.

the same goes email_ids_all. there api call generates 10,000 emails , each of them added array email_ids_all. script receiving error halfway through generating these emails, , need rescue script delete email ids in email_ids_all array. whatever reason, following error:

fs_test_env.rb:762:in `block in <main>': undefined local variable or method `email_ids_all' main:object (nameerror)     fs_test_env.rb:759:in `open'     fs_test_env.rb:759:in `rescue in <main>'     fs_test_env.rb:7:in `<main>' 

any thoughts?

the scope of block parameter log limited block. whole point of open block.

maybe want do:

begin   log = file.open('logfile', 'w')   ... rescue   ... ensure   log.close end 

note not cover errors when opening logfile.

regarding email_ids_all, guess (!) have exception in statement like:

email_ids_all = ... long , complex calculation raises exception 

if yes, problem assignment happens after whole right-hand side calculated. var email_ids_all not yet created when exception happens.

in order access elements created before exception, have keep track of them, e.g.

begin   email_ids = []   10000.times      email_ids << ... # create element raising exception   end rescue   ... # treat created elements end 

Comments

Popular posts from this blog

html - How to style widget with post count different than without post count -

How to remove text and logo OR add Overflow on Android ActionBar using AppCompat on API 8? -

javascript - storing input from prompt in array and displaying the array -