[#400858] Support for multiple Inheritance by classes — Ross Konsolebox <lists@...>

Will Ruby ever support multiple inheritance through classes instead of

23 messages 2012/11/03
[#400859] Re: Support for multiple Inheritance by classes — Arlen Cuss <ar@...> 2012/11/03

I think I can say "no" with a fair amount of confidence.

[#400902] Re: Support for multiple Inheritance by classes — Ross Konsolebox <lists@...> 2012/11/04

Arlen Cuss wrote in post #1082618:

[#400904] Re: Support for multiple Inheritance by classes — Peter Hickman <peterhickman386@...> 2012/11/04

Even though other languages handle multiple inheritance without any

[#400865] why does UnboundMethod need to remember the class it was retrieved from (not merely owner)? — "Mean L." <lists@...>

class Base; def foo; end end

17 messages 2012/11/03

[#400914] login web page using mechanize — john smith <lists@...>

new to ruby, love the language. read programmatic programmers guide to

25 messages 2012/11/04

[#400985] How to merge two or more hashes in to one? — "Jermaine O." <lists@...>

Hi everyone.

14 messages 2012/11/06

[#401026] Site down watir-webdriver — ajay paswan <lists@...>

Whenever a site is down it keeps on looking for it for sometime and

14 messages 2012/11/07

[#401027] Closing popups watir-webdriver — ajay paswan <lists@...>

Sometimes popup comes when a link is clicked, sometimes popup comes when

14 messages 2012/11/07

[#401125] Complete newbie — "Carlos A." <lists@...>

Hey guys!

14 messages 2012/11/10

[#401161] Convert date to string — Ferdous ara <lists@...>

Hi

12 messages 2012/11/11

[#401173] question on watir — Raj pal <lists@...>

I am automating Idit application using Ruby, at one screen I can't feed

233 messages 2012/11/12

[#401191] Extending Array instances — Charles Hixson <charleshixsn@...>

I'm trying to figure out a good way to extend an Array, when the items

17 messages 2012/11/12
[#401195] Re: Extending Array instances — Brian Candler <lists@...> 2012/11/12

Charles Hixson wrote in post #1084111:

[#401200] Efficient way for comparing records between 2 large files (16 million records) — Ruby Student <ruby.student@...>

Team,

9 messages 2012/11/12

[#401274] following along with "Beginning Ruby." — Al Baker <lists@...>

I'm having trouble following along with some of the examples in this

15 messages 2012/11/15

[#401279] Question on exceptions — Justin Gamble <lists@...>

Hello! I have a simple bank program where I have to have an exception

16 messages 2012/11/15
[#401281] Re: Question on exceptions — Justin Gamble <lists@...> 2012/11/15

What is the reason of doing the .new(...)in

[#401295] Re: Question on exceptions — Brian Candler <lists@...> 2012/11/16

Justin Gamble wrote in post #1084635:

[#401296] Re: Question on exceptions — tamouse mailing lists <tamouse.lists@...> 2012/11/16

On Fri, Nov 16, 2012 at 1:43 AM, Brian Candler <lists@ruby-forum.com> wrote:

[#401301] Alternatives to methods for large number of nested "ifs" — Philip Rhoades <phil@...>

People,

11 messages 2012/11/16

[#401336] Advice for simple client/server application — Panagiotis Atmatzidis <atma@...>

Hello,

12 messages 2012/11/17

[#401364] Metaprogramming — "Aurimas N." <lists@...>

Hello,

12 messages 2012/11/19

[#401404] "undefined method `synchronize' for #<Mutex:0xa0f5adc>" from embedded Ruby program — Graham Menhennitt <graham@...>

I'm writing a C++ program (on Centos 5 Linux) that embeds a Ruby 1.9.3

9 messages 2012/11/21

[#401422] how to increase variable inside the while loop — Ferdous ara <lists@...>

Hi, my question might be confusing as its hard for me to make it clear,

12 messages 2012/11/21

[#401451] Arrays with records as objects — Steve Tucknott <lists@...>

I am completely new to Ruby.

11 messages 2012/11/22

[#401458] working with mysql in ruby — john smith <lists@...>

i have been trying to successfully connect ruby with mysql. there are a

17 messages 2012/11/22

[#401567] click on link not working with ie #watir-webdriver — ajay paswan <lists@...>

Greetings,

12 messages 2012/11/26

[#401578] atomic statements in multithreading — ajay paswan <lists@...>

suppose I am working in multiple thread each thread runs following

10 messages 2012/11/26

[#401607] Novice: Understanding instance 'variables' and methods — Steve Tucknott <lists@...>

A question - or comment - on instance variables.

10 messages 2012/11/26

[#401644] Getting the smallest Items of an Array — "Ismail M." <lists@...>

Hello guys,

14 messages 2012/11/27

[#401655] gem problems(sigh) — Al Baker <lists@...>

i tried to make a gem and tried to build the spec file and this is what

10 messages 2012/11/28

[#401688] sorting data from a file — "Ismail M." <lists@...>

Hey guys,

16 messages 2012/11/28

[#401706] Newbie question: (free) on-line courses? — Ken D'Ambrosio <ken@...>

Hello, all. There's a bunch of free on-line training for Javascript,

11 messages 2012/11/28

Re: Question on exceptions

From: "Carlo E. Prelz" <fluido@...>
Date: 2012-11-17 07:40:46 UTC
List: ruby-talk #401324
	Subject: Re: Question on exceptions
	Date: Sat 17 Nov 12 12:47:06PM +0900

Quoting tamouse mailing lists (tamouse.lists@gmail.com):

> Do you (or anyone else who'd like to chime in!) have a ... set of
> heuristics, maybe? .. that help you know when it's appropriate and
> when it's not?
> 
> The reason I ask is not merely academic. I see in code many places
> where it is raising and exception, and then the rescue code does
> something like this:
> 
> rescue Exception
> 
>    # blah blah
> 
> end
> 
> In other words, they know an exception might be raised, but they trap
> evey possible exception, rather than a specific one. I'm worried (?)
> (thinking) that use of raising exceptions might be a little too easily
> decided upon as the answer, and if I should maybe push back on such
> implementations...

I will try to describe in words the fuzzy logic I follow.

I do not often use exceptions. In more than seven years of using Ruby,
I have probably only subclassed Exception once or twice. I generally
capture an exception (thrown by my code or by other libraries) like
this:

rescue => err
  print_a_message_on_the_log(err)
  maybe_print_backtrace(err.backtrace)
  maybe_correct_this_or_that_value
  maybe_break_out_of_a_loop_or_return
end

The Ruby interpreter's usage of exceptions is mostly limited to grave
events. I try to mimic this usage in my raising practices. Basically,
exceptions should only indicate situations that have to be debugged
out: an exception should never indicate a special, but acceptable,
case.

I come from C (I still use C). Practice in C tends to be that your
procedures return non-zero in case of errors - the non-zero value
indicates the type of error. This can be cascaded: you check the
return value, and return the same if negative, and so on. But it can
certainly escalate to awkwardness, especially if at some level your
function has to return other data.

For me, the advantage of the exception mechanism is that it has its
own, separate distribution channel. If you do not catch an exception,
the program terminates, with VERY useful debugging data: the message
of the exception, and the backtrace.

When I encounter an exception, the catching option is not the
preferred one. If at all possible, I try to modify the code so that
the special case either does not happen, or is specifically handled,
in a programmatic way. If I resort to a rescue clause like the one
above, it means that I come to the (maybe temporary) conclusion that
the special case can happen, but it is something to be monitored. My
programs tend to have meaningful log files: disk space is
cheap. Patterns of repetition of warning messages may give precious
hints to solving complex bugs or refactoring non-optimized
algorithms. 

If I catch an exception, I can do so at any of the steps of the
backtrace. Often it is useful to make use of the exception-raising
logic to get out of some of the levels of the call tree.

This iterative process is part and parcel of the testing phase that
all new code has to undergo. Every situation is different. If you
really care about the healthy operation of your code, every choice
should be tuned to the specific case. The process cannot be made
automatic. Automatic coding/debugging results in mediocre programs. 

In all cases, I would not use the exception mechanism in the example
that the original poster makes. Rather, the BankAccount#withdraw
method would return true (or possibly the new balance of the account)
if the withdraw method was successful, and false otherwise. Ruby has a
neat syntax for catching false/nil values:

unless(account.withdraw(sum))
 ...

The condition of insufficient funds is maybe undesirable from the
point of view of the account holder, but it is a perfectly legitimate
situation; all mechanisms that handle withdrawals should foresee and
properly manage it. Withdrawals *can* fail. It should not be an
exception-al event from the point of view of the code.

This is just an effort to put into words my craft. Every other
craftsman/woman will most probably follow different ways. 

Carlo

-- 
  *         Se la Strada e la sua Virtu' non fossero state messe da parte,
* K * Carlo E. Prelz - fluido@fluido.as             che bisogno ci sarebbe
  *               di parlare tanto di amore e di rettitudine? (Chuang-Tzu)

In This Thread