Rescu all errors and then case statement

How can I read what type of error occured in rescue clause.
For example, I have the following:

begin
“some code here”

rescue
case
when “error type 1”

when “error type 2”
end

end

I know I could raise errors within code section and then have specif
rescues, but I want to have one rescue and then do different things with
it in the rescue.

Thanks in advance.

On Jan 10, 2008 2:17 PM, Michal S. [email protected] wrote:

when “error type 2”
end

end

I know I could raise errors within code section and then have specif
rescues, but I want to have one rescue and then do different things with
it in the rescue.

Thanks in advance.

You can do something like this:

begin

rescue => e

end

basically, the “=> e” bit will store the thrown error in the “e”
variable.

that works good. In addition to that is there a way to tell what error
type is it ?

e.class

Dan

Daniel F. wrote:

e.class

Dan
Thanks guys.

On Jan 10, 2008 5:17 PM, Michal S. [email protected] wrote:

when “error type 2”
end

end

I know I could raise errors within code section and then have specif
rescues, but I want to have one rescue and then do different things with
it in the rescue.

errors = [IOError, ZeroDivisionError, ArgumentError]

errors.each do |klass|
begin
puts “raising #{klass.name}”
raise klass
rescue => e
case e
when IOError
puts “it’s IOError!”
when ZeroDivisionError
puts “it’s ZeroDivisionError”
else
puts “other error: #{e.class.name}”
end
end
end


Rados³aw Bu³at

http://radarek.jogger.pl - mój blog