Submitted by mig (Wed Aug 04 05:08:52 UTC 2004)
I have method with many "raise". I want to call it and herewith supress any errors (ignore these raises).
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
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.
Comments | Current voting | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
|
This RCR supersedes RCR 271.
RCRchive copyright © David Alan Black, 2003-2005.
Powered by .
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:
But you can retry too and that's not a "serious problem". This RCR is essentially resume --and for that I vote yes. I see no real reason retry is okay but not resume. --T.
Resuming is interesting topic to discuss. But I think it's separate issue. Why don't you submit another RCR if you have resuming exception idea.
-- matz.