[#3109] Is divmod dangerous? — Dave Thomas <Dave@...>

14 messages 2000/06/06

[#3149] Retrieving the hostname and port in net/http — Roland Jesse <jesse@...>

Hi,

12 messages 2000/06/07

[#3222] Ruby coding standard? — Robert Feldt <feldt@...>

16 messages 2000/06/09

[#3277] Re: BUG or something? — Aleksi Niemel<aleksi.niemela@...>

> |I am new to Ruby and this brings up a question I have had

17 messages 2000/06/12
[#3281] Re: BUG or something? — Dave Thomas <Dave@...> 2000/06/12

Aleksi Niemel<aleksi.niemela@cinnober.com> writes:

[#3296] RE: about documentation — Aleksi Niemel<aleksi.niemela@...>

> I want to contribute to the ruby project in my spare time.

15 messages 2000/06/12

[#3407] Waffling between Python and Ruby — "Warren Postma" <embed@...>

I was looking at the Ruby editor/IDE for windows and was disappointed with

19 messages 2000/06/14

[#3410] Exercice: Translate into Ruby :-) — Jilani Khaldi <jilanik@...>

Hi All,

17 messages 2000/06/14

[#3415] Re: Waffling between Python and Ruby — Andrew Hunt <andy@...>

>Static typing..., hmm,...

11 messages 2000/06/14

[#3453] Re: Static Typing( Was: Waffling between Python and Ruby) — Andrew Hunt <andy@...>

32 messages 2000/06/16

[#3516] Deep copy? — Hugh Sasse Staff Elec Eng <hgs@...>

Given that I cannot overload =, how should I go about ensuring a deep

20 messages 2000/06/19

[#3694] Why it's quiet — hal9000@...

We are all busy learning the new language

26 messages 2000/06/29
[#3703] Re: Why it's quiet — "NAKAMURA, Hiroshi" <nahi@...> 2000/06/30

Hi,

[#3705] Re: Why it's quiet — matz@... (Yukihiro Matsumoto) 2000/06/30

Hi,

[ruby-talk:03364] Re: Exception Handling

From: Dave Thomas <Dave@...>
Date: 2000-06-13 15:04:09 UTC
List: ruby-talk #3364
"David Douthitt" <DDouthitt@cuna.com> writes:

> I'm rather confused by Exception Handling.  The descriptions in the
> FAQ and the Ruby Manual about begin ... rescue ... ensure ... else
> .... end are not very clear.  Here are some questions I might ask to
> either author(s):
> 
> 1. What is a good use of this construct?

It helps to catch exceptions that would otherwise terminate your
program.

> 
> 2. What if no rescue clause is matched?

The exception is propagated back up the stack

> 3. When is the ensure clause run?  After every exception?  Only when
>    the "normal flow" is complete?  Both?

Both -- basically it is guaranteed to be run regardless of how the
block exits.

> 4. Why should this be used instead of catch and throw?  When is it
>    better to use one over the other?

Exceptions have more flexible matching semantics - you can match on
multiple exceptions, and match on parent classes. Also, there's the
practical reason: the library code raises exceptions on error.

> 5. I assume that "retry" restarts the command that failed, not the
>    command after it.  Is this true?  Some languages would use the
>    command after the failure.

Retry retries the _entire_ begin/end block. Take it again, Joey, from
the top.

> 6. How does the use of "retry" affect the "rescue" clause?  The
>    ensure clause?

Not all all. It basically is a 'goto' back to the top. Any exceptions
that fire the next time around will be handled normally.

For an example of retry in action, se ruby-talk:[03217].

> 1. Raising an exception in "at_exit" code block causes the rest of
>    the code to be quietly ignored (no exception raised?)

Because you haven't established an exception handler, so it exits to
the top level (just as if you had an unhandled exception anywhere).

> What special concerns are there for exception handling in at_exit
> code?  What about exceptions raised in "exception handling" cases
> such as rescue clauses?

I'm going to stick my neck out here. I'd say that having exception
handling tends to mean you don't need at_exit code as much as you
might do in more primitive languages. Instead, you handle problems as
they arise. If noting else, you can put your main program in a
begin/end block and handle any residual exceptions it its rescue
clause.

> Should be a whole book (or chapter at least) on exception handling

Chapter 8 good enough?   ;-)



Dave

In This Thread

Prev Next