Errors in Ruby

In the following sentence: The raise method is from the Kernel module.
By default, raise creates an exception of the RuntimeError class. From:
http://rubylearning.com/satishtalim/ruby_exceptions.html

What is meant by raising an exception of the "RunTimeError"? And, if we
raise it on "ArgumentError", what is mean by that?

Thanks.

···

--
Posted via http://www.ruby-forum.com/.

irb:0> ArgumentError.ancestors
=> [ArgumentError, StandardError, Exception, Object, Kernel]
irb:0> RuntimeError.ancestors
=> [RuntimeError, StandardError, Exception, Object, Kernel]
irb:0> RuntimeError.superclass
=> StandardError
irb:0> ArgumentError.superclass
=> StandardError
irb:0> begin
irb:1* raise "foo"
irb:1> rescue Exception => e
irb:1> puts e.class
irb:1> end
RuntimeError

Hth, Sandor Szücs

···

On Jul 13, 2010, at 2:07 PM, Abder-rahman Ali wrote:

In the following sentence: The raise method is from the Kernel module.
By default, raise creates an exception of the RuntimeError class. From:
Learn How to Blog and Build Websites for Profit!

What is meant by raising an exception of the "RunTimeError"? And, if we
raise it on "ArgumentError", what is mean by that?

--

Hi,

Exceptions are just regular classes in ruby. You can create your own
or use the multitude of built in Exceptions.

Exception are usually very simple classes. The reason why you might
need more than one is differentiation. Sometimes things can go wrong
in more than one way.

begin
  # Do stuff that raises an exception
rescue MyFirstException => err
  puts "MyFirstException occurred"
rescue MySecondException => err
  puts "MySecondException occurred"
end

Usually you can distinguish what an exception is supposed to represent
by its name. RunTimeError is a kind of catch-all error, you can trap
almost every "normal" error using this exception class. An
ArgumentError on the other hand is more specific and is raised when
you try to call methods using the wrong number or type of arguments.

def foo(x, y)
  puts x, y
end

foo(3) => raises ArgumentError

/lasso

···

On 13 Juli, 14:07, Abder-Rahman Ali <abder.rahman....@gmail.com> wrote:

In the following sentence: The raise method is from the Kernel module.
By default, raise creates an exception of the RuntimeError class. From:Learn How to Blog and Build Websites for Profit!

What is meant by raising an exception of the "RunTimeError"? And, if we
raise it on "ArgumentError", what is mean by that?

Thanks.
--
Posted viahttp://www.ruby-forum.com/.

Lars Olsson wrote:

···

On 13 Juli, 14:07, Abder-Rahman Ali <abder.rahman....@gmail.com> > wrote:

In the following sentence: The raise method is from the Kernel module.
By default, raise creates an exception of the RuntimeError class. From:Learn How to Blog and Build Websites for Profit!

What is meant by raising an exception of the "RunTimeError"? And, if we
raise it on "ArgumentError", what is mean by that?

Thanks.
--
Posted viahttp://www.ruby-forum.com/.

Hi,

Exceptions are just regular classes in ruby. You can create your own
or use the multitude of built in Exceptions.

Exception are usually very simple classes. The reason why you might
need more than one is differentiation. Sometimes things can go wrong
in more than one way.

begin
  # Do stuff that raises an exception
rescue MyFirstException => err
  puts "MyFirstException occurred"
rescue MySecondException => err
  puts "MySecondException occurred"
end

Usually you can distinguish what an exception is supposed to represent
by its name. RunTimeError is a kind of catch-all error, you can trap
almost every "normal" error using this exception class. An
ArgumentError on the other hand is more specific and is raised when
you try to call methods using the wrong number or type of arguments.

def foo(x, y)
  puts x, y
end

foo(3) => raises ArgumentError

/lasso

Thanks for your reply.

I just want to ask a thing since I'm new to Ruby.

When you say: rescue MyFirstException => err

How do you read this =>

Thanks.
--
Posted via http://www.ruby-forum.com/\.

Thanks Sandor.

···

--
Posted via http://www.ruby-forum.com/.

Hi,

The "=> err" is not really needed, it just makes the error object
available as a variable for further use. Like in:

begin
  raise "Killer robots!"
rescue Exception => err
  puts "#{err.message} (#{err.class})" # prints 'Killer robots!
(RuntimeError)'
end

/lasso

···

On 13 Juli, 16:51, Abder-Rahman Ali <abder.rahman....@gmail.com> wrote:

Thanks Sandor.
--
Posted viahttp://www.ruby-forum.com/.

Thanks a lot Lasso, that makes it clear.

···

--
Posted via http://www.ruby-forum.com/.