class Cuprum::Errors::UncaughtException

An error returned when a command encounters an unhandled exception.

Constants

TYPE

Short string used to identify the type of error.

Attributes

cause[R]
exception[R]

@return [StandardError] the exception that was raised.

Public Class Methods

new(exception:, message: 'uncaught exception') click to toggle source

@param exception [StandardError] The exception that was raised. @param message [String] A message to display. Will be annotated with

details on the exception and the exception's cause (if any).
Calls superclass method Cuprum::Error::new
# File lib/cuprum/errors/uncaught_exception.rb, line 15
def initialize(exception:, message: 'uncaught exception')
  @exception = exception
  @cause     = exception.cause

  super(message: generate_message(message))
end

Private Instance Methods

as_json_data() click to toggle source
# File lib/cuprum/errors/uncaught_exception.rb, line 29
def as_json_data # rubocop:disable Metrics/MethodLength
  data = {
    'exception_backtrace' => exception.backtrace,
    'exception_class'     => exception.class,
    'exception_message'   => exception.message
  }

  return data unless cause

  data.update(
    {
      'cause_backtrace' => cause.backtrace,
      'cause_class'     => cause.class,
      'cause_message'   => cause.message
    }
  )
end
generate_message(message) click to toggle source
# File lib/cuprum/errors/uncaught_exception.rb, line 47
def generate_message(message)
  message = "#{message} #{exception.class}: #{exception.message}"

  return message unless cause

  message + " caused by #{cause.class}: #{cause.message}"
end