Comment on this RCR (edit wiki page) | RCRchive home

RCR 272: ignoring raise exceptions (supressing all errors)

submitted by mig on Wed Aug 04 2004 01:54:52 AM -0700

Status: pending


Abstract

I have method with many "raise". I want to call it and herewith supress any errors (ignore these raises).

Problem

It would be useful when you have a method which is called at once by user and internally. If internally, you need to supress testings and force it.

def foo
   raise "account already exist" if bla
   raise "account..." if bla
   create_account
end

Nowadays I must do it like this (which makes code less readable and larger):

def foo
   unless @force
      raise "account already exist" if bla
      raise "account..." if bla
   end
   create_account
end

Proposal

I think this could be an elegant solution:

begin
  my_method
rescue
  ignore
end

Ignore would act as continue of raise, you'll be able to do some stuff and then return back.

Analysis


Vote for this RCR

Strongly opposed [3]
Opposed [0]
Neutral [0]
In favor [0]
Strongly advocate [0]

Change the status of this RCR to:

accepted

rejected

withdrawn


I don't think I understand the proposal.

The latter is more important. Since most code do not expect raise not terminating the method execution, ignoring error can cause serious problem. In general, I feel like this is not useful except for special cases like yours, unless I misunderstand you.

--matz.

I've think about it and you're right. If I really need it I can write "myraise" wrapper and force method:


def myraise text
   unless @force
       raise text
   end
end
def force
   @force = true
   yield
   @force = false
end

Add comments here


Back to RCRchive.


RCR Submission page and RCRchive powered by Ruby, Apache, RuWiki (modified), and RubLog