Rescue and continue on next statement?

Hello, I've seen there is a retry statement that rerun the entire begin/end block which raised the exception...

I wonder if there is a way to 'continue' (from the rescue block) with the next statement following the one which raised the exception.

Eg :

begin
       File.delete("#{@fichier_destination_sql}.gz") # sql
       File.delete("#{@fichier_destination_tar}.tgz") # tar
       File.delete("/tmp/aboulafia-db-testdb_rbackup-uid1.gz")
       File.delete("/tmp/aboulafia-rep-ror_anaema-uid1.tgz")
rescue
  
end

I want to avoid FileTest.
If a file does not exists, the others will not be deleted which is not what I want.

I would like

begin
  # snip
rescue
  continue
end

Is there a solution ? Or a common pattern to avoid this situation ?

Thanks !

How about this?

file_names = [/*your file names here*/]

file_names.each do |file|

    begin
         File.delete(file)
     rescue
         /*Exception handling goes here */
    end

end

···

On 12/7/06, Zouplaz <user@domain.invalid> wrote:

Is there a solution ? Or a common pattern to avoid this situation ?

--
Bira

http://sinfoniaferida.blogspot.com

File.delete "#{@fichier_destination_sql}.gz" rescue nil
File.delete "#{@fichier_destination_tar}.tgz" rescue nil
File.delete "/tmp/aboulafia-db-testdb_rbackup-uid1.gz" rescue nil
File.delete "/tmp/aboulafia-rep-ror_anaema-uid1.tgz" rescue nil

···

On Dec 7, 2006, at 04:10 , Zouplaz wrote:

Hello, I've seen there is a retry statement that rerun the entire begin/end block which raised the exception...

I wonder if there is a way to 'continue' (from the rescue block) with the next statement following the one which raised the exception.

--
Eric Hodel - drbrain@segment7.net - http://blog.segment7.net

I LIT YOUR GEM ON FIRE!

Zouplaz wrote:

Hello, I've seen there is a retry statement that rerun the entire
begin/end block which raised the exception...

I wonder if there is a way to 'continue' (from the rescue block) with
the next statement following the one which raised the exception.

I try this in the "script/console" of my project and works:

["telefono","escritorio","sillones","sillas","sillones","cajas","modulares","archivos"].each
do |title|
  begin
    p = Product.new(:title => title)
    p.save!
  rescue ActiveRecord::RecordInvalid => e
    #maybe collect errors
    next
  end
end

Juan Matias

···

--
Posted via http://www.ruby-forum.com/\.

Eric Hodel wrote:

Hello, I've seen there is a retry statement that rerun the entire
begin/end block which raised the exception...

I wonder if there is a way to 'continue' (from the rescue block)
with the next statement following the one which raised the exception.

File.delete "#{@fichier_destination_sql}.gz" rescue nil
File.delete "#{@fichier_destination_tar}.tgz" rescue nil
File.delete "/tmp/aboulafia-db-testdb_rbackup-uid1.gz" rescue nil
File.delete "/tmp/aboulafia-rep-ror_anaema-uid1.tgz" rescue nil

--
Eric Hodel - drbrain@segment7.net - http://blog.segment7.net

I LIT YOUR GEM ON FIRE!

Hmmm... is it just because this is an example that the code is repeated?
If not, how about something like

%W[#{@fichier_destination_sql}.gz
   #{@fichier_destination_tar}.tgz
   /tmp/aboulafia-db-testdb_rbackup-uid1.gz"
   /tmp/aboulafia-rep-ror_anaema-uid1.tgz].each do |f|
  File.delete(f) rescue nil
end

···

On Dec 7, 2006, at 04:10 , Zouplaz wrote:

--
Posted via http://www.ruby-forum.com/\.

Sorry, stray quote. I meant:

%W[#{@fichier_destination_sql}.gz
   #{@fichier_destination_tar}.tgz
   /tmp/aboulafia-db-testdb_rbackup-uid1.gz
   /tmp/aboulafia-rep-ror_anaema-uid1.tgz].each do |f|
  File.delete(f) rescue nil
end

···

--
Posted via http://www.ruby-forum.com/.