Recue-raise vs catch-throw


#1

Dear All

I wonder if anyone could better explain me the difference between
rescue-raise and catch-throw paradigms

Thanks in Advance
Raja


#2

Hi Vin R.,

I wonder if anyone could better explain me the difference between
rescue-raise and catch-throw paradigms
imho, with rescue you catch exceptions and with catch and throw
(opposite of continuations :slight_smile: you skip the rest of a catch block with an
optional return value…

see http://whytheluckystiff.net/ruby/pickaxe/html/tut_exceptions.html
for a more detailed explanation…

Regards
Florian


#3

Hi,

Am Donnerstag, 12. Jul 2007, 18:32:49 +0900 schrieb Vin R.:

I wonder if anyone could better explain me the difference between
rescue-raise and catch-throw paradigms

I never felt no need to use catch-throw anywhere.
Maybe there is some special case I did not get in touch up
to now.

Bertram


#4

Florian
see http://whytheluckystiff.net/ruby/pickaxe/html/tut_exceptions.html
Thanks

Bertram S. wrote:
I never felt no need to use catch-throw anywhere.
Even I do wonder


Raja


#5

2007/7/12, Vin R. removed_email_address@domain.invalid:

Florian
see http://whytheluckystiff.net/ruby/pickaxe/html/tut_exceptions.html
Thanks

Bertram S. wrote:
I never felt no need to use catch-throw anywhere.
Even I do wonder

raise / rescue is for error handling. catch / throw is for control
flow. catch / flow is especially useful if you have multiple exits for
a piece of code. Although I have to say I rarely felt the need for
this. Basically it’s the same as a method with multiple "return"s only
you do not leave the current scope.

Kind regards

robert


#6

On 2007-07-12 18:32:49 +0900 (Thu, Jul), Vin R. wrote:

Dear All

I wonder if anyone could better explain me the difference between
rescue-raise and catch-throw paradigms

Thanks in Advance
Raja

With raise you operate on descendants of Exception class.
With throw you can use any object.

I suppose this is the main difference.

Raise should be used for errors and similiar things, while throw just
for standard operations. It would be very confusing for the reader of
the code if raise would be used to pass data, and not for being the
signal that some dangerous/unusual condition may be handled here.
I guess.

Of course, I may be wrong :wink:


#7

Mariusz Pękala wrote:

Some deep recursive search comes to mind…

and that smells of a goto usecase !

or perhaps even I could be wrong :slight_smile:


#8

2007/7/12, Vin R. removed_email_address@domain.invalid:

Mariusz Pêkala wrote:

Some deep recursive search comes to mind…

and that smells of a goto usecase !

Oh no! He used the g-word!! Decontaminate the mailing list!

:wink:

robert


#9

On 2007-07-12 19:26:11 +0900 (Thu, Jul), Vin R. wrote:

Bertram S. wrote:
I never felt no need to use catch-throw anywhere.
Even I do wonder

Some deep recursive search comes to mind…