Methods of Exception Class in Ruby

Here, we are going to learn about the various methods of Exception class in Ruby programming with their usages, syntaxes and examples.
Submitted by Hrithik Chandra Prasad, on November 11, 2020

Here, we will see some of the methods of the Exception class. We have already discussed the hierarchy of the Exception class. Exceptions are nothing but the abnormal and unwanted conditions which appear during runtime. The methods of Exception class are used between begin and end block for creating an interface for raise and rescue keywords.
When you create an Exception instance or object, they contain the information of Exceptions like its type, some kind of optional descriptive string, and other kinds of optional information.

Some of the major methods of Exception class are listed below along with their demonstrating program codes and syntaxes.

1) Exception class methods

They are exception and new.

i) new

As the name suggests, this method is used to create a new instance or object of Exception class with setting the message string optionally.

Syntax:

Exception.new(message)

Example:

=begin
    Ruby program to demonstrate use of new method 
=end

class NewException < StandardError 
attr_reader :myobj

def initialize(myobj) 
  @myobj = myobj 
end
end

begin

raise NewException.new("This is my object created with new"), "This is self made class"
rescue NewException => e 
puts e.message 
puts e.myobj 
end

Output:

This is self made class
This is my object created with new

Explanation:

In the above code, you can see that we have created a custom or self-made exception named NewException with the help of extending the Standard error class then we have created a constructor of it with the help of the initialize method. Coming towards the begin end block where we have actually implemented a new method for creating the object of NewException class. You can see that the string between round brackets are sent to the constructor and the rest is sent to the message method.

ii) exception

Alike new method, this method is also used to create a new instance or object of Exception class with setting the message string optionally.

Syntax:

Exception.exception(message)

Example:

=begin
    Ruby program to demonstrate use of exception method 
=end

class NewException < StandardError 
attr_reader :myobj

def initialize(myobj) 
  @myobj = myobj 
end
end

begin

raise NewException.exception("This is my object created with exception"), "This is self made class"
rescue NewException => e 
puts e.message 
puts e.myobj 
end

Output:

This is self made class
This is my object created with exception

Explanation:

In the above code, you can see that we have created a custom or self-made exception named as NewException with the help of extending the Standard error class then we have created a constructor of it with the help of initialize method. Coming towards the begin end block where we have actually implemented exception method for creating the object of NewException class. You can see that the string between round brackets are sent to constructor and rest is sent to the message method.

2) Public instance methods

i) backtrace

This method is used to show any backtrace, if there exists any in the object of Exception classes. This is a kind of String array that contains either method named as filename:line:in or filename:line. backtrace tells us in which line the error or exception occurred.

Syntax:

exception_object.backtrace

Example:

=begin
    Ruby program to demonstrate use of backtrace method
=end 
 
def meth1 
    raise "exception raised! Rescue"
end

def meth2  
    meth1() 
end

begin 
    meth2()  
    rescue => meth_Details 
    puts meth_Details.backtrace.join("\n") 
end

Output:

main.rb:6:in `meth1'
main.rb:10:in `meth2'
main.rb:14:in `<main>'

Explanation:

In the above code you can observe that our program is displaying information about the backtrace which occurred in the object with the help of backtrace method.

ii) message

This method is a public instance method which is used to print the message which might be stored while declaring the object.

Syntax:

Exception_object.message

Example:

=begin
    Ruby program to demonstrate use of new method 
=end

class NewException < StandardError 
    attr_reader :myobj
    
    def initialize(myobj) 
      @myobj = myobj 
    end
end

begin
    raise NewException.new("This is my object created with new"), "This is self made class"
    rescue NewException => e 
    puts e.message 
    puts e.myobj 
end

Output:

This is self made class
This is my object created with new

Explanation:

In the above code you can observe that with the help of message method, we are able to see the message which is associated with the object of Exception class passed at the time of creation of object.

iii) set_backtrace

This method is a public instance method of Exception class which is used to set information related to backtrace in the object of the Exception class.

Example:

=begin
    Ruby program to demonstrate use of set_backtrace method
=end 
class ErrorCreate
  def self.new(error, message = nil, backtrace: caller)
    exception = error.new(message)
    exception.set_backtrace(backtrace)
    exception
  end
end
ErrorCreate.new(StandardError,"Hello from includehelp.com", backtrace: caller)

Output:

#<StandardError: Hello from includehelp.com>

Explanation:

In the above code you can observe that we have created our own error and implemented set_backtrace in it. With the help of this method we are setting information about the error.

iv) to_s

This message is a public instance method that is used to return the message passed along with the object of the Exception class when the Exception object was created. It returns the name of the object if no message is passed.

Syntax:

Exception_object.to_s

Example:

=begin
    Ruby program to demonstrate use of to_s method 
=end

begin 
    raise "Exception Raised. From includehelp.com"
    rescue Exception => e 
    puts e.to_s 
end

Output:

Exception Raised. From includehelp.com

v) inspect

This is a public instance method which is used to return the name of exception class along with the message.

Example:

=begin
    Ruby program to demonstrate use of inspect method 
=end

class NewException < StandardError 
    attr_reader :myobj
    
    def initialize(myobj) 
      @myobj = myobj 
    end
end

begin
    raise NewException.new("This is my object created with new"), "This is self made class"
    rescue NewException => e 
    puts e.message 
    puts e.myobj
    puts e.inspect 
end

Output:

This is self made class
This is my object created with new
#<NewException: This is self made class>

Explanation:

In the above code, you can observe that we have created an object of NewException class and the method inspect is informing us about the name of class and the message associated with the object.

vi) == operator

This is a public instance method which is used to compare the classes of Exceptions. If two exceptions are of same class, this method returns true otherwise false.

Syntax:

Object_of_Exception == Object2_of_Exception

Example:

=begin
    Ruby program to demonstrate use of == method 
=end

class NewException < StandardError 
    attr_reader :myobj
    
    def initialize(myobj) 
      @myobj = myobj 
    end
end

begin
    raise NewException.new("This is my object created with new"), "This is self made class"
    rescue NewException => e 
    obj = NewException.new("Hello")
    obj1 = NewException.new("Bye")
    puts e.message 
    puts e.myobj
    puts obj1 == obj
end

Output:

This is self made class
This is my object created with new
true

Explanation:

In the above output you can observe that we have created two objects of NewException class and after comparing both of them with ==, we are getting true as the result.






Comments and Discussions

Ad: Are you a blogger? Join our Blogging forum.





Languages: » C » C++ » C++ STL » Java » Data Structure » C#.Net » Android » Kotlin » SQL
Web Technologies: » PHP » Python » JavaScript » CSS » Ajax » Node.js » Web programming/HTML
Solved programs: » C » C++ » DS » Java » C#
Aptitude que. & ans.: » C » C++ » Java » DBMS
Interview que. & ans.: » C » Embedded C » Java » SEO » HR
CS Subjects: » CS Basics » O.S. » Networks » DBMS » Embedded Systems » Cloud Computing
» Machine learning » CS Organizations » Linux » DOS
More: » Articles » Puzzles » News/Updates


© https://www.includehelp.com some rights reserved.