Bird
Raised Fist0
Rubyprogramming~5 mins

Exception hierarchy in Ruby - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the root class for all exceptions in Ruby?
The root class for all exceptions in Ruby is <code>Exception</code>. All other exception classes inherit from it.
Click to reveal answer
intermediate
What is the difference between StandardError and Exception in Ruby?
<code>StandardError</code> is a subclass of <code>Exception</code> and is the default for rescue clauses. Most common errors inherit from <code>StandardError</code>, while <code>Exception</code> includes system errors that are usually not rescued.
Click to reveal answer
beginner
Name two common subclasses of StandardError.
Two common subclasses of StandardError are NoMethodError (raised when calling a method that doesn't exist) and ArgumentError (raised when wrong arguments are passed to a method).
Click to reveal answer
intermediate
Why should you avoid rescuing Exception directly in Ruby?
Rescuing Exception catches all exceptions, including system errors like Interrupt or SystemExit, which can prevent your program from exiting properly. It's safer to rescue StandardError or specific exceptions.
Click to reveal answer
intermediate
What class do syntax errors belong to in Ruby's exception hierarchy?
Syntax errors belong to the <code>SyntaxError</code> class, which inherits directly from <code>ScriptError</code>, a subclass of <code>Exception</code>. They are not subclasses of <code>StandardError</code>.
Click to reveal answer
Which class is the parent of most common Ruby exceptions?
AException
BStandardError
CRuntimeError
DScriptError
What happens if you rescue Exception in Ruby?
AYou rescue only syntax errors
BYou rescue only runtime errors
CYou rescue all exceptions, including system errors
DYou rescue only standard errors
Which class is NOT a subclass of StandardError?
ANoMethodError
BArgumentError
CRuntimeError
DSyntaxError
Which exception class is used for errors raised when a method is called with wrong arguments?
AArgumentError
BNameError
CTypeError
DNoMethodError
Which class is the direct parent of SyntaxError?
AScriptError
BStandardError
CException
DRuntimeError
Explain the Ruby exception hierarchy starting from Exception down to common error classes.
Think about which exceptions are rescued by default and which are not.
You got /4 concepts.
    Why is it recommended to rescue StandardError instead of Exception in Ruby?
    Consider what happens if you catch all exceptions including system interrupts.
    You got /3 concepts.

      Practice

      (1/5)
      1.

      Which class is the root of the exception hierarchy in Ruby?

      easy
      A. RuntimeError
      B. StandardError
      C. Exception
      D. IOError

      Solution

      1. Step 1: Understand Ruby's exception hierarchy

        In Ruby, all exceptions inherit from the Exception class, which is the root of the hierarchy.
      2. Step 2: Identify the root class

        Other exception classes like StandardError and RuntimeError are subclasses of Exception.
      3. Final Answer:

        Exception -> Option C
      4. Quick Check:

        Root exception class = Exception [OK]
      Hint: Remember: all errors come from Exception root [OK]
      Common Mistakes:
      • Confusing StandardError as root
      • Thinking RuntimeError is root
      • Choosing specific error classes instead of root
      2.

      Which of the following is the correct way to rescue only StandardError exceptions in Ruby?

      begin
        # some code
      rescue ???
        puts 'Error caught'
      end
      easy
      A. StandardError
      B. Exception
      C. RuntimeError
      D. IOError

      Solution

      1. Step 1: Understand rescue syntax

        The rescue keyword can specify which exception class to catch by naming it after rescue.
      2. Step 2: Choose the correct exception class

        To catch only StandardError exceptions, write rescue StandardError.
      3. Final Answer:

        StandardError -> Option A
      4. Quick Check:

        Rescue specific error = StandardError [OK]
      Hint: Use rescue with exact error class name [OK]
      Common Mistakes:
      • Using Exception catches too many errors
      • Using RuntimeError misses other StandardErrors
      • Using IOError catches unrelated errors
      3.

      What will be the output of this Ruby code?

      begin
        raise IOError, 'File error'
      rescue StandardError => e
        puts e.class
      end
      medium
      A. StandardError
      B. Exception
      C. RuntimeError
      D. IOError

      Solution

      1. Step 1: Identify the raised exception

        The code raises an IOError with message 'File error'.
      2. Step 2: Check rescue clause

        The rescue catches StandardError and its subclasses. IOError is a subclass of StandardError, so it is caught.
      3. Step 3: Output the exception class

        The code prints e.class, which is IOError.
      4. Final Answer:

        IOError -> Option D
      5. Quick Check:

        Raised error class = IOError [OK]
      Hint: Raised error class prints even if rescued [OK]
      Common Mistakes:
      • Assuming rescue prints StandardError
      • Confusing Exception with StandardError
      • Thinking RuntimeError is printed
      4.

      Find the error in this Ruby code snippet:

      begin
        raise 'Oops!'
      rescue IOError
        puts 'IO error caught'
      end
      medium
      A. The raise statement must specify an exception class
      B. The rescue clause will not catch the raised error
      C. The rescue clause syntax is incorrect
      D. No error; code runs fine

      Solution

      1. Step 1: Analyze the raised error

        Raising with a string 'Oops!' creates a RuntimeError by default.
      2. Step 2: Check rescue clause type

        The rescue only catches IOError, but the raised error is RuntimeError, so it is not caught.
      3. Final Answer:

        The rescue clause will not catch the raised error -> Option B
      4. Quick Check:

        Rescue type mismatch causes uncaught error [OK]
      Hint: Raised error type must match rescue type [OK]
      Common Mistakes:
      • Thinking rescue catches all errors by default
      • Believing string raise is invalid syntax
      • Assuming rescue syntax is wrong
      5.

      You want to catch all exceptions except system-exiting ones like SystemExit and Interrupt. Which class should you rescue to catch most errors but allow system exits?

      hard
      A. StandardError
      B. Exception
      C. RuntimeError
      D. NoMethodError

      Solution

      1. Step 1: Understand exception classes for system exit

        Classes like SystemExit and Interrupt inherit directly from Exception, not StandardError.
      2. Step 2: Choose rescue class to exclude system exits

        Rescuing StandardError catches most runtime errors but excludes system-exiting exceptions.
      3. Step 3: Confirm other options

        Rescuing Exception catches everything including system exits, which is usually not desired.
      4. Final Answer:

        StandardError -> Option A
      5. Quick Check:

        Rescue StandardError to exclude system exits [OK]
      Hint: Rescue StandardError to avoid catching system exits [OK]
      Common Mistakes:
      • Rescuing Exception catches system exits too
      • Choosing RuntimeError misses some errors
      • Confusing NoMethodError as base class
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard