module SOAP::NestedException

Attributes

cause[R]
original_backtraace[R]

Public Class Methods

new(msg = nil, cause = nil) click to toggle source
Calls superclass method
# File lib/soap/nestedexception.rb, line 17
def initialize(msg = nil, cause = nil)
  super(msg)
  @cause = cause
  @original_backtrace = nil
end

Public Instance Methods

set_backtrace(backtrace) click to toggle source
Calls superclass method
# File lib/soap/nestedexception.rb, line 23
  def set_backtrace(backtrace)
    if defined?(@cause) and @cause.respond_to?(:backtrace)
      @original_backtrace = backtrace
=begin
      # for agressive backtrace abstraction: 'here' only should not be good
      here = @original_backtrace[0]
      backtrace = Array[*@cause.backtrace]
      backtrace[0] = "#{backtrace[0]}: #{@cause} (#{@cause.class})"
      backtrace.unshift(here)
=end
      # just join the nested backtrace at the tail of backtrace
      caused = Array[*@cause.backtrace]
      caused[0] = "#{caused[0]}: #{@cause} (#{@cause.class}) [NESTED]"
      backtrace += caused
    end
    super(backtrace)
  end